Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Обзор языков программирования высокого уровня ( Классификация языков программирования)

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

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

Задачи курсовой работы:

  1. Провести классификацию языков программирования с точки зрения сферы применения и особенностей реализации, типов трансляции кода с команд языка в машинные команды.
  2. Провести обзор популярности и востребованности ЯВУ, основываясь на профессиональных публикациях и обзорах.
  3. Кратко охарактеризовать несколько выбранных представителей.
  4. Привести практические примеры реализации кода на выбранных языках программирования.

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

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

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

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

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

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

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

машинные языки (машинные коды);

ассемблеры;

языки высокого уровня[3].

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

Одними из первых кто широко начал использовать такой подход стала компания Sun с предложенным ей языком Java и виртуальной машиной для поддержки кроссплатформенности[21]. Позже эта идея была подхвачена компанией MicroSoft.

Кроме типа трансляции кода языки отличаются направленностью и предназначением. Есть универсальные языки, которые позволяют писать различные программы, но есть и достаточно специализированные имеющие очень узкую направленность и оптимизированные для конкретных задач. Так среди ЯВУ выделяют: функциональные, математические и языки для моделирования, языки для построения запросов и работы с БД, графические библиотеки (дают дополнительные возможности используются совместно с другими языками программирования), скриптовые языки, логическое программирование и реализация интеллектуальных экспертных систем и многие другие.

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

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

2 Обзор языков по востребованности и популярности

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

IEEE Spectrum ‑ один из ведущих научных и инженерных журналов в мире представил рейтинг, составленный по 12 различным метрикам из 10 разных источников, в частности в качестве источников использовались следующие ресурсы: Google Search, Google Trends, Twitter, GitHub, Stack Overflow, Reddit, Hacker News, CareerBuilder, Dice, IEEE Xplore Digital Library. В рейтинге Вы можете увидеть две колонки: левая представляет 2016 год, правая — 2015[24]. По этим диаграммам можно отследить статистику и динамику изменения популярности языков программирования за последний год.

В вершине списка мы можем видеть: Java, C, C++, Python, C#. Эти языки остаются на вершине с неизменными позициями, хотя C в последжнее время приблизился к Java и их позиции практически уровнялись. Огромный рывок произвел язык R ‑ являющийся удобным для анализа и визуализации больших данных, который занимает шестую строчку

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

рейтинг мов програмування

Рисунок 1 – Рейтинг языков программирования по версии IEEE за последние два года[24]

На рис. 2 представлен сводный рейтинг по исследованиям IEEE с учетом комплексного набора характеристик и собственных наблюдений разработчиков рейтинга.

рейтинг трендів мов програмування

Рисунок 2 – общий рейтинг языков программирования по версии IEEE

Рассмотрим еще один рейтинг, представленный на сайте Habr.ru.

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

Java по-прежнему самый распространенный язык программирования; разрыв между Java и C# - увеличивается.

JavaScript вошел в тройку лидеров, вытеснив из нее PHP.

Возобновился рост использования Scala.

Соотношение Objective-C/Swift все еще 80/20.

Основные языки разработки в 2016

На каком языке вы пишете для работы сейчас (в 2016 году)

Рисунок 3– опрос пользователей ресурса

А вот и динамика за последние 6 лет:

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

Рисунок 4 – Динамика популярности языков программирования за последние 6 лет

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

Доп. языки

Рисунок 5 – рейтинг популярности вспомогательных средств разработки (не основной инструмент проекта)

В этом рейтинге все достаточно закономерно и стабильно в последние несколько лет. Небольшой рост можно отметить только у C++, возможно, это связано с ростом hardware-проектов.

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

3 Краткая характеристика выбранных языков

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

В последние насколько лет в топе постоянно присутствуют языки С++ и С#. Первые позиции занимают языки типа PHP или JavaScript. Ввиду того, что языки имеют абсолютно различную направленность они очень трудно сравнимы. Сложность их сравнения лежит уже в самом ядре этих языков: С++ ‑ является компилятором, C# ‑ компилятор, но с наличием виртуальной машины и промежуточного кода, PHP – интерпретатор с выполнением кода на стороне сервера, JavaScript – интерпретатор с выполнением кода на стороне клиента (код выполняется браузером). Делать какую либо сравнительную характеристику этих языков не имеет смысла и с точки зрения их различной направленности. С другой стороны обзор был бы достаточно не полным если не упомянуть Web-ориентированных инструментов и языков предназначенных для реализации активной составляющей сайтов и веб-ресурсов. Исходя из этого – далее приведем только некоторую общую характеристику этих популярных языков.

3.1 Язык С++ и среда C++Builder

Одним из наиболее распространенных на сегодня объектно-ориентированных языков программирования является C++. Язык C++ позволяет получить код, сравнимый по быстродействию с кодом на Ассемблере [1].

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

Вышеописанным требованиям отвечает среда Borland C++Builder и встроенный язык программирования С++.

Рисунок 6 – Внешний вид среды разработки после запуска

Основные преимущества среды и языка:

- Объектно-ориентированный язык программирования C + + Builder позволяет удобно абстрагировать объект проектирования, его отдельные элементы, и организовать классы общего назначения, введение защищенных и открытых членов класса, эффективно моделируют проектирования сложных систем управления и работу реальных объектов с использованием наглядного мониторинга базы информации;

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

CBuilder сочетает простоту среды быстрой разработки программ, или RAD - среды (Rapid Application Development - RAD), с мощью и производительностью языка C + +, совместимому со стандартом ANSI.

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

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

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

  • VCL - модуль, обеспечивающий (обслуживает) все объекты и процедуры системы меню C + + Builder, а также выпадающее меню и активные элементы сроки статуса, работа с меню и модули, обеспечивающие процедуры и функции отображения диалоговых окон;
  • PROCESS - модуль для отображения процесса работы программы;
  • GLOBAL - модуль который включает в себя глобальные, для всей программы функции, процедуры и константные значения;
  • FORMS - процедуры и функции по работе с формами, подключаемых и обеспечивают возможность использования стандартных библиотечных функций, а именно: подключение диалоговых окон, меню пользователя, организации функции нажима кнопок для получения с клавиатуры режима работы системы в текущий момент времени, вывода на экран информации о текущем состоянии базы данных, подготовки экрана к диалогу с пользователем и т.д.. Использование стандартных библиотек также позволит облегчить построение некоторых частей программы.

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

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

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

Среда Borland C++ Builder 6 является RAD-инструментом, предоставляющим возможность программирования в стиле drag-and-drop, основанного на компонентах. Этот стиль программирования получил широкое распространение, практически вытеснив концепцию каркасов. Каркас это основа, скелет вашего приложения, который объединяет в себе все его части. Однако у каркасов есть существенный недостаток – вместо того чтобы сделать программирование более простым и гибким, каркасы вынуждают писать программы по заранее определенным жестким правилам. Несмотря на то, что каркасы действительно ускоряют разработку приложения, предоставляя в распоряжение разработчика многие из основных функций нормального Windows приложения, они сразу же встают на пути создания нестандартных программ, то есть практически невозможно сделать то, что каркас не предоставляет или изменить сам каркас. В отличие от каркасов компоненты никакой структуры не навязывают [2]. Есть ещё один аспект, на который необходимо обратить внимание: в С++Builder зашита невероятно мощная и чрезвычайно гибкая среда программирования баз данных, что немаловажно для разрабатываемой программы. По сути дела это первая среда программирования баз данных для C++. Интерфейс с базами данных во многих других системах С++ состоит из набора объектов которые являются лишь тонкими оболочками скрывающими под собой низкоуровневые функции баз данных.

Можно написать вполне законченный редактор баз данных не написав ни единой строчки кода на С++. Ближайшим конкурентом Borland C++ Builder является не Microsoft Visual C++, которая построена по другой технологии и не является RAD-системой, а Microsoft Visual Basic [3]. Наряду с Borland C++ Builder 6, также распространена IDE-среда Borland Delphi, но объектно-ориентированные возможности значительно уступают Borland C++ Builder 6.

C++Builder поддерживает основные принципы объектно-ориентированного программирования-инкапсуляцию, полиморфизм и множественное наследование, а также введенные спецификации и ключевые слова в стандарте языка.

Опытным C++ программистам нравится синтаксис и структура кода разрабатываемых на C++Builder программ , хотя его графическое обрамление заметно отличается от традиционных оболочек систем разработки.

C++Builder обеспечивает высокое быстродействие при компиляции и сборке 32-разрядных программ для современных операционных систем Windows, включая OLE взаимодействие клиент-сервер. Система даже отображает время, затраченное на основные этапы построения программ. Результирующие программы хорошо оптимизированы по скорости исполнения и затратам памяти. Хотя режим отладки низкого уровня полностью интегрирован в среду C + + Builder. Дизайнер форм. Инспектор объектов и других средств остаются доступными во время работы программы, поэтому вносить изменения можно в процессе отладки.

C + + Builder поставляется в трех вариантах: Standard (стандартный). Professional (для профессионалов разработчиков, ориентированных на сетевую архитектуру) и Client/Server Suite (для разработки систем в архитектуре клиент/сервер). Последние два варианта дополняют стандартный исходными текстами визуальных компонентов, разным словарем данных, новыми функциями языка запросов SQL для баз данных, пакетом поддержки систем Internet, службой мониторинга программ, а также множеством других средств. Пользовательский интерфейс программ приобрел законченный профессиональный вид.

3.2 Язык программирования С# и среда VisualStudio

Как показывают обзоры ‑ достаточно популярным в последние годы является язык C#, а в качестве среды разработки под этот язык часто используется очень мощная среда ‑ VisualStudio, разработчиком которых является фирма Microsoft. Ввиду такой популярности язык и среда очень хорошо документированы, по нему достаточно легко можно найти примеры и справочную информацию как в электронном (http://msdn.microsoft.com), так и в бумажном виде.

В корпорации Microsoft специально под платформу .NET был разработан новый язык программирования С#. Синтаксис этого языка программирования очень похож на синтаксис языка Java. Однако сказать, что С# просто переписан с Java, будет неточно. И язык С#, и язык Java просто оба являются членами семейства языков программирования С (в которое также входят языки С, Objective С, C++ и т.д.) и потому имеют схожий синтаксис[13].

Многие синтаксические конструкции в С# моделируются согласно различным особенностям Visual Basic 6.0 и C++. Например, как и в VB6, в С# поддерживается понятие формальных свойств типов (в противоположность традиционным методам get и set) и возможность объявлять методы, принимающие переменное количество аргументов (через массивы параметров). Как и в C++, в С# допускается перегружать операции, а также создавать структуры, перечисления и функции обратного вызова (посредством делегатов).

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

С# представляет собой собранный из нескольких языков гибрид, он является таким же «чистым» с синтаксической точки зрения, как и язык Java, почти столь же простым, как язык VB6, и практически таким же мощным и гибким как C++ (только без ассоциируемых с ним громоздких элементов).

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

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

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

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

В версии .NET 3.5 (которая вышла примерно в 2008 г.) в язык программирования С# снова были добавлены новые функциональные возможности, наиболее важные из которых описаны ниже.

  • Поддержка для строго типизированных запросов (также называемых запросами LINQ), которые применяются для взаимодействия с различными видами данных.
  • Поддержка для анонимных типов, которые позволяют моделировать форму типа, а не его поведение.
  • Возможность расширять функциональные возможности существующего типа с помощью методов расширения.
  • Возможность использовать лямбда-операцию (=>), которая даже еще больше упрощает работу с типами делегатов в .NET.
  • Новый синтаксис для инициализации объектов, который позволяет устанавливать значения свойств во время создания объектов.
  • В текущем выпуске платформы .NET версии 4.0 язык С# был опять обновлен и дополнен рядом новых функциональных возможностей.
  • Поддержка необязательных параметров в методах, а также именованных аргументов.
  • Поддержка динамического поиска членов во время выполнения посредством ключевого слова dynamic.
  • Вместе с предыдущей возможностью в .NET 4.0 значительно упрощается обеспечение взаимодействия приложений на С# с унаследованными серверами СОМ, благодаря устранению зависимости от сборок взаимодействия (interop assemblies) и предоставлению поддержки необязательных аргументов ref.
  • Работа с обобщенными типами стала гораздо понятнее, благодаря появлению возможности легко отображать обобщенные данные из общих коллекций System.Object с помощью ковариантности и контравариантности.
  • Профессиональные разработчики программного обеспечения .NET как правило располагают самым серьезным в этой сфере продуктом производства Microsoft, который называется Visual Studio 2010 и доступен по адресу http: //msdn.microsoft.com/vstudio. Этот продукт представляет собой самую функционально насыщенную и наиболее приспособленную под использование на предприятиях IDE-среду.

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

  • графические редакторы и конструкторы XML;
  • поддержка разработки программ Windows, ориентированных на мобильные устройства;
  • поддержка разработки программ Microsoft Office;
  • поддержка разработки проектов Windows Workflow Foundation;
  • встроенная поддержка рефакторинга кода;
  • инструменты визуального конструирования классов.

Утилита Solution Explorer (Проводник решений), доступная через меню View (Вид), позволяет просматривать набор всех файлов с содержимым и ссылаемых сборок, которые входят в состав текущего проекта. Внутри папки References (Ссылки) в окне Solution Explorer отображается список всех сборок, на которые в проекте были добавлены ссылки.

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

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

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

  • Шаблоны для вставки фрагментов кода (code snippet). Эти шаблоны позволяют вставлять общие блоки кода в месте расположения курсора мыши.
  • Шаблоны для окружения кода (Surround With). Эти шаблоны позволяют помещать блок избранных операторов в рамки соответствующего контекста.

В Visual Studio 2012 имеется возможность конструировать классы визуальным образом. Для этого в составе Visual Studio 2012 поставляется утилита под названием Class Designer (Конструктор классов), которая позволяет просматривать и изменять отношения между типами (классами, интерфейсами, структурами, перечислениями и делегатами) в проекте. С помощью этой утилиты можно визуально добавлять или удалять члены из типа с отражением этих изменений в соответствующем файле кода на С#, а также в диаграмме классов. Для работы с этой утилитой сначала необходимо вставить новый файл диаграммы классов.

Последним средством в Visual Studio 2012, который необходимо обязательно упомянуть, является полностью интегрируемая справочная система. Поставляемая с .NET Framework 4.5 SDK документация представляет собой исключительно хороший, очень понятный и насыщенный полезной информацией источник. При наличии соединения с Интернетом просматривать документацию .NET Framework 4.5 SDK можно в онлайновом режиме по следующему адресу: http://msdn.microsoft.com/library. Разумеется, при отсутствии постоянного соединения с Интернетом такой подход оказывается не очень удобным.

3.3 Веб ориентированные языки и инструменты

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

HTML – как основное средство разработки и верстки веб - страниц;

PHP – язык программирования web;

Javascript – язык программирования web;

Jquery – расширение языка Javascript (библиотека) для усовершенствования интерфейса.

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

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

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

PHP (англ. PHP: Hypertext Preprocessor ‑ PHP: гипертекстовый препроцессор), предварительно: Personal Home Page Tools ‑ скриптовый язык программирования, был создан для генерации Html-Страниц на стороне веб- сервера. PHP есть одним из наиболее распространенных языков, которые используются в сфере веб-разработок (вместе с Java, .NET, Perl, Python, Ruby). PHP поддерживается подавляющим большинством хостинг- провайдеров. Проект создания PHP — проект с открытыми программными кодами.

PHP интерпретируется веб-сервером в Html-код, который передается на сторону клиента. В отличие от таких скриптовых языков, как Javascript, пользователь не имеет доступа к Php-коду, что является преимуществом с точки зрения безопасности, но значительно ухудшает интерактивность страниц. Но ничто не запрещает использовать РНР для генерирования и Javascript - кодов, которые выполнятся уже на стороне клиента.

PHP - язык, который может быть встроен непосредственно в html-код страниц, которые, в свою очередь корректно будут обработанные PHP -интерпретатором. Механизм РНР просто начинает выполнять код после первой экранирующей последовательности (<?) и продолжает выполнение к тому моменту, когда он встретит парную экранирующую последовательность (?>).

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

Для PHP характерно:

наличие интерфейсов доступа ко многим базам данных, в PHP встроенные библиотеки для работы по Mysql, Postgresql, msql, Oracle, dbm, Hyperware, Informix, Interbase, Sybase. А через стандарт открытого интерфейса связи с базами данных (Open Database Connectivity Standard ‑ ODBC) можно подключаться ко всем базам данных, к которым существует драйвер.

язык РНР будет казаться знакомой программистам, которые работают в разных областях. Много конструкций языка заимствованы с С и Perl. Код РНР очень похожий на тот, который встречается в типичных программах на С или Pascal. Это заметно снижает начальные усилия при изучении РНР. PHP - язык, который объединяет преимущества Perl и С і специально направленная на работу в Интернете, язык с универсальным и понятным синтаксисом. И хотя PHP является довольно молодым языком, он получил такую популярность среди web-программистов, что на данный момент есть чуть ли не популярнейшим языком для создания веб - сервисов (скриптов).

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

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

Дополнительно рассмотрим один из наиболее популярных фреймворков PHP ‑ Yii, выбор его обоснован рядом преимуществ и удобных особенностей.

Yii — это высокоэффективный, основанный на компонентной структуре, PHP-фреймворк для разработки масштабных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки. Название Yii (произносится как Yee или [ji:]) означает простой (easy), эффективный (efficient) и расширяемый (extensible), известно и другое трактование ‑ (Yii — сокращение от «Yes It Is!») Для эффективных проектов предпочтительней создавать сайты «с нуля» с использованием такого инструмента, как фреймворки. Фреймворки не являются системой управления, но представляют собой ряд готовых решений, направленных на автоматизацию рутинных процессов (подключение к базе данных, обработка действий от пользователя, модули для решения задач первой необходимости и т.д.). С помощью фреймворков, более гибких, чем CMS, можно создать любой веб-продукт, включая также и сами системы управления сайтом.

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

Основные преимущества:

  1. Открытый код. Это значит, что в случае обнаружения ошибки ее можно оперативно исправить, а не ждать, когда выйдет очередное обновление, как это бывает с CMS.
  2. Наличие разработчиков, знакомых с системой. Фреймворк Yii существует с 2008 года, и за это время на рынке появилось достаточное количество программистов, имеющих опыт использования данного фреймворка.
  3. Документированность кода.
  4. Самый высокий уровень безопасности по сравнению с другими фреймворками.

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

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

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

При генерации страниц в Web возникает дилемма, связанная с архитектурой "клиент-сервер". Страницы можно генерировать как на стороне клиента, так и на стороне сервера. В 1995 году специалисты компании Netscape создали механизм управления страницами на клиентской стороне, разработав язык программирования ‑ Javascript.

Таким образом, Javascript - это язык управления сценариями просмотра гипертекстовых страниц Web на стороне клиента. Если быть более точным, то Javascript - это не только язык программирования на стороне клиента. Liveware, прародитель Javascript, является средством подстановок на стороне сервера Netscape. Однако самую большую популярность Javascript обеспечило программирование на стороне клиента.

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

Javascript стандартизированный ECMA (European Computer Manufacturers Association - Ассоциация европейских производителей компьютеров). Соответствующие стандарты носят названия ECMA-262 и ISO-16262. Этими стандартами определяется язык Ecmascript, что приблизительно эквивалентен Javascript 1.1. Отметим, что не все реализации Javascript на сегодня полностью отвечают стандарту ECMA.

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

  • свойства;
  • методы;
  • события.

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

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

Рисунок 7 – Иерархия классов языка Javascript

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

4 Примеры реализации кода на языке C#

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

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

4.1 Консольное приложение

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

Задание

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

Рисунок 8 – параметрически заданная функция

Этап формализации

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

Переменные из условия задачи

Переменные в программе и их значения

Тип данных

хнач

xBeg = -6

double

хкон

xEnd = 9

double

dx

dX = 0.5

double

Y

y

double

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

Значение функции Y определяются следующим образом:

Алгоритм

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

Листинг

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Lab5

{

class Program

{

static void Main(string[] args)

{

double x, x0=-6, xn = 9, dx = 0.5, y;

Console.Write("Вычисление значений функции заданной графически\n");

Console.Write("___X____||____Y____\n");

for (x = x0; x <= xn; x += dx)

{

if (x < -5) { y = -3;}

else

if ((x >= -5) && (x < -3)) { y = x + 3; }

else

if ((x >= -3) && (x <= 3)) { y = Math.Sqrt(9 - x * x); }

else

if ((x > 3) && (x <= 8)) { y = (3 * x - 9) / 5; }

else { y = 3; }

Console.Write("|{0,6:G2} || {1,7:G5}|\n", x, y);

}

Console.Write("________||_________\n");

Console.ReadLine();

}

}

}

Тестовый пример

4.2 Обработка массивов

Задача 1.

Даны вещественные массивы A[8], B[8], C[8]. Определить значения вещественного массива D[3][8]. В первую строку массива D записать значения массива A, во вторую ‐ массива В, а в 3‐ю ‐ массива С.

Листинг:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

double[] a = new double[8];

double[] b = new double[8];

double[] c = new double[8];

double[,] d = new double [3,8];

int i,j;

Console.WriteLine("Вводим данные в массивов а[8], b[8], c[8]\n");

for (i=0; i<8; i++)

{

Console.Write("a[{0}]=",i);

a[i] = Convert.ToDouble(Console.ReadLine());

Console.Write("b[{0}]=",i);

b[i]=Convert.ToDouble(Console.ReadLine());

Console.Write("c[{0}]=",i);

c[i]=Convert.ToDouble(Console.ReadLine());

}

// Инициализация массива d[3][8] элементами массивов а[8], b[8], c[8]

Console.WriteLine("\n\n Результатирующий массив\n");

for (i=0; i<8; i++)

{

d[0,i] = a[i];

d[1,i] = b[i];

d[2,i] = c[i];

}

for (i=0; i<3; i++)

{

for (j=0; j<8;j++)

{

Console.Write(" {0,4} ", d[i,j]);

}

Console.WriteLine();

}

Console.ReadLine();

}

}

}

Результат

Задача 2.

Даны целые массивы A[10], B[10] и значения C,E,D,F. Каждый массив преобразовать следующим образом: если элемент массива A[i] >=0, то он заменяется на значение C, иначе на значение D. Если элемент массива B[i] >= 0, то он заменяется на значение E, иначе на значение F.

Листинг:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication2

{

class Program

{

//Ввод значений эл. массива

static void input_arr(int size, char name, int[] arr)

{

for (int i = 0; i < size; i++)

{

Console.Write("{0}[{1}]=", name, i);

arr[i] = Convert.ToInt32(Console.ReadLine());

}

}

//Вывод значений эл. массива

static void output_arr(int size, char name, int[] arr)

{

Console.Write("{0}:\n", name);

for (int i = 0; i < size; i++)

{

Console.Write("{0} ", arr[i]);

}

Console.Write("\n");

}

static void Main(string[] args)

{

int[] a = new int[10];

int[] b = new int[10];

int c = 0,d=0,e=0,f=0;

int i, j;

Console.WriteLine("Введите начальные значения массивов:\n");

Console.WriteLine("Массив A:\n");

input_arr(10, 'A',a);

Console.WriteLine("Массив B:\n");

input_arr(10, 'B',b);

Console.WriteLine("Введите элементы для замены:\n");

Console.Write("c=");

c= Convert.ToInt32 (Console.ReadLine());

for (i = 0; i < 10; i++)

{

if (a[i]<0)

{a[i] = d;}

else

{a[i] = c;}

if (b[i]<0)

{b[i] = f;}

else

{b[i] = e;}

}

Console.WriteLine("Массивы после преобразования:");

output_arr(10, 'A', a);

output_arr(10, 'B', b);

Console.ReadLine();

}

}

}

Результат

4.3 Разработка приложений WinForms

Для примера рассмотрим решение предыдущих задач с массивами, но уже с использованием технологии WinForms.

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

Листинг

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace b4_2WF

{

public partial class Form1 : Form

{

int[] a = new int[10];

int[] b = new int[10];

public Form1()

{

InitializeComponent();

dataGridView1.RowCount = 2;

dataGridView1.ColumnCount = 11;

dataGridView1.Rows[0].SetValues("мас.A:");

dataGridView1.Rows[1].SetValues("мас.B:");

dataGridView2.RowCount = 2;

dataGridView2.ColumnCount = 11;

dataGridView2.Rows[0].SetValues("мас.A:");

dataGridView2.Rows[1].SetValues("мас.B:");

}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (Char.IsNumber(e.KeyChar) ||

(!string.IsNullOrEmpty(textBox1.Text) && e.KeyChar == '-'))

{

return;

}

else

{ e.Handled = true; }

}

private void button1_Click(object sender, EventArgs e)

{

// RAndom inicialization

Random rnd = new Random();

for (int i = 0; i < 10; i++)

{

a[i] = 100 - rnd.Next(201);

dataGridView1.Rows[0].Cells[i + 1].Value = a[i];

b[i] = 100 - rnd.Next(201);

dataGridView1.Rows[1].Cells[i + 1].Value = b[i];

}

}

private void button2_Click(object sender, EventArgs e)

{

int C = Convert.ToInt32(textBox1.Text),

D = Convert.ToInt32(textBox2.Text),

E = Convert.ToInt32(textBox3.Text),

F = Convert.ToInt32(textBox4.Text);

for (int i = 0; i < 10; i++)

{

if (a[i] < 0)

{

a[i] = D;

}

else

{ a[i] = C; }

dataGridView2.Rows[0].Cells[i + 1].Value = a[i];

if (b[i] < 0)

{

b[i] = F;

}

else

{ b[i] = E; }

dataGridView2.Rows[1].Cells[i + 1].Value = b[i];

}

}

private void button3_Click(object sender, EventArgs e)

{

for (int i = 0; i < 10; i++)

{

a[i] = Convert.ToInt32( dataGridView1.Rows[0].Cells[i + 1].Value);

b[i] = Convert.ToInt32( dataGridView1.Rows[1].Cells[i + 1].Value);

}

}

}

}

Результат

До заполнения данными

После заполнения

После преобразования

ВЫВОДЫ

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

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

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

На некоторое время, после своего появления в 2000 году, язык C# вытеснил многие языки в своем сегменте. Этому способствовало ряд факторов: объектная ориентированность языка, мощный набор готовых типов, классов, библиотек, возможность разработки широкого спектра программ: от консольных до веб ориентированных, плотная поддержка разработчиком(обновления, интегрированность, документация), кросплатформенность.

Ввиду очень удобного объектно-ориентированного дизайна, C# является хорошим выбором для быстрого конструирования различных компонентов - от высокоуровневой бизнес логики до системных приложений, использующих низкоуровневый код. Также следует отметить, что C# является и Web ориентированным - используя простые встроенные конструкции языка ваши компоненты могут быть легко превращены в Web сервисы, к которым можно будет обращаться из Internet посредством любого языка на любой операционной системе. Дополнительные возможности и преимущества перед другими языками приносит в C# использование передовых Web технологий, таких как: XML (Extensible Markup Language) и SOAP (Simple Object Access Protocol). Среда разработки Web сервисов позволяет программисту смотреть на существующие сегодня Web приложения, как на родные C# объекты, что дает возможность разработчикам соотнести имеющиеся Web сервисы с их познаниями в объектно-ориентированном программировании.

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

Задачи, поставленные в курсовой работе выполнены в полном объеме.

ЛИТЕРАТУРА

  1. Федоров А. Г. Создание Windows-приложений в среде C++ Builder 6. М.: ТОО «Компьютер Пресс», 2002.
  2. Хендерсон К. Руководство разработчика баз данных в C++ Builder 6. М: Диалектика, 2000.
  3. Гвоздева Т. В., Б. А. Баллод, Проектирование информационных систем, М, Издательство: Феникс, 2009 г., 512 стр.
  4. Литвиненко Н. А. - Технология программирования на С++, - Петербург: БХВ 2010
  5. Стефан Р. Дэвис - С++ Для чайников, - М.: Вильямс 2003, - 336 стр.
  6. Кузнецов С. Д., Основы баз данных, М, Издательства: Бином. Лаборатория знаний, Интернет-университет информационных технологий, 2007 г., 488 стр.
  7. Илюшечкин В. М. , Основы использования и проектирования баз данных, М, Издательство Юрайт, 2010 г., 224 стр.
  8. Дрейер Мартин. C# для школьников. 2009, 126 стр.
  9. Дубовцев А. Microsoft .NET. Наиболее полное руководство. 2004, 701 стр.
  10. Культин. C# в задачах и примерах. 2007, 241 стр.
  11. Купцевич Ю.И. Альманах программиста Безопасность в Microsoft .NET. 2004, 294 стр.
  12. Либерти Д. Программирование на C#. Создание .NET приложений. Программирование на C#. 684 стр.
  13. Нейгел, Ивьен, Глинн, Уотсон, Скиннер. C# 2008 и платформа .NET 3.5 для профессионалов. 2009, 1392 стр.
  14. Нортроп Т. Основы разработки приложений на платформе .NET Framework. Экзамен 70-536. 2007, 864 стр.
  15. Нэш Т. C# 2008 Ускоренный курс для профессионалов. 2008, 576 стр.
  16. Пауэрс Л. Microsoft Visual Studio 2012 в подлиннике. 2013, 1191 стр.
  17. Петцольд Ч. Программирование для Microsoft Windows на С#. Том 1. 2002, 570 стр.
  18. Рихтер Д. Программирование на платформе Microsoft .NET FRAMEWORK 2.0 на языке C# 2007, 658 стр.
  19. Симон Робинсон и др. C# для профессионалов. Том 1. 2003. 516 стр.
  20. МакГрат Майк Программирование на Java для начинающих/ М.: Издательство: ЭКСМО, 2016 ISBN: 978-5-699-85743-2, 192 стр.
  21. Алексей Васильев Самоучитель Java с примерами и программами. 3-е изд./ СП.: Наука и Техника, 2016 ISBN: 978-5-94387-985-2, 368 стр.
  22. «PHP, Mysql и Dreamweaver MX 2004. Разработка интерактивных Web-Сайтов.» Дронов В. А. — Спб.: Бхв-Петербург, 2005. - 448 с : ил.
  23. «PHP and Mysql Web Development (4th Edition)», Luke Welling, Laura Thomson 848 стр.
  24. Динамика изменения позиций популярности языков Электронный ресурс [режим доступа]: https://cosmonova.net/ru/page/top_popular_programming_language
  25. Сравнение популярности и востребованности языков программирования Электронный ресурс [режим доступа]: https://habrahabr.ru/hub/github/