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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

Языки программирования делятся на уровни: языки высокого уровня, языки низкого уровня и универсальные языки. Разработка программ на языках высокого уровня значительно проще и ошибок намного меньше. К тому же время разработки программы значительно уменьшается, что является особенно важным фактором при работе над сложными программными проектами. Недостаток некоторых языков высокого уровня состоит в большом размере программ по сравнению с программами на языках низкого уровня. В то же время текст программ на языке высокого уровня гораздо меньше, но в байтах код, написанный на ассемблере, будет более компактным. Поэтому языки высокого уровня преимущественно используют для создания программного обеспечения для компьютеров и вычислительных устройств с большим объемом памяти. Языки же низкого уровня используются для написания программ к устройствам, для которых критичным является размер программы. Языки высокого уровня делятся на универсальные и проблемно-ориентированные. Наиболее распространенные универсальные языки C#, C++, Basic, Pascal (Delphi) используются для разработки Windows-приложений.

Большой вклад в программирование на начальных этапах внесли проблемно-ориентированные языки Fortran, Cobol, Algol, C и др.

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

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

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

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

Задачи, направленные на достижение цели курсовой работы:

1. Проанализировать системы программирования.

2. Изучить возможности языка программирования.

3. Выявить особенности Паскаль, C++, Python.

Рассмотрению вопроса графических приложений в языках программирования посвящены работы авторов И. А. Бабушкиной, С. М. Окулова, О. Е. Масленниковой, И. В. Гавриловой, Л. Г. Гагариной, Е. В. Кокоревой и других.

ГЛАВА 1. СИСТЕМЫ ПРОГРАММИРОВАНИЯ

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

Согласно определению Б.Л Ворфа: «Язык формирует наш способ мышления и определяет то, о чём мы можем мыслить»[10, с.198]. Для компьютера важнее не просто язык, а язык программирования, под которым понимают формальную знаковую систему, предназначенную для записи программ, задающих алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.

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

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

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

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

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

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

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

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

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

  • Компилируемые языки. К этой группе относят язык программирования, исходный код которых преобразуется специальной программой-компилятором в объектные модули, которые затем собираются при помощи программы сборки (линковщика) в единый загружаемый модуль. Это представляет собой выполняемую программу. Компилируемыми являются языки C, C++, Object Pascal.
  • Интерпретируемые языки. К этой группе относят язык программирования, исходный код которых считывается и выполняется специальной программой-интерпретатором инструкция за инструкцией. Интерпретируемыми являются большинство версий языков Basic и Forth.
  • Языки, компилируемые на основе псевдокода («шитого» кода). В этих языках исходный код программы компилируется и выполняется как последовательность вызовов подпрограмм из существующих библиотек. Таковыми являются некоторые версии Basic.
  • Совмещенные языки. В совмещенных языках исходный код проходит две стадии обработки. На первой стадии происходит компиляция исходного кода до уровня промежуточного языка (байт-код в Java или язык MSIL в технологии .NET). На второй стадии происходит интерпретация промежуточного кода (в Java этим занимается виртуальная машина Java) или докомпиляция промежуточного кода до выполняемого машинного кода (эту функцию осуществляет среда выполнения CLR в технологии .NET).

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

  • Языки создающие процесс. После запуска программы создается отдельный процесс выполнения этой программы. Так происходит в языках C, C++, Object Pascal.
  • Сценарные языки. Сценарий, или скрипт, - это программа, которую выполняет другая программа. В качестве примеров можно привести скрипты оболочки в UNIX, программы на языках PHP, Python, Ruby.

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

  • Автономные языки программирования (C, C++, Java) являются автономным инструментом для создания программ.
  • Встроенные языки программирования являются частью какой-то системы и позволяют создавать программы, предназначенные для работы только в этой системе. Пример наиболее известного встроенного языка – VBA (Visual Basic for Application), который используется только внутри приложений Microsoft Office для автоматизации и расширения их функциональности. Встроенными являются также язык программирования системы 1C и язык JavaScript, который выполняется только внутри интернет-приложений.

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

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

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

  • Императивные (процедурные) языки описывают решение задачи как последовательность процедур. К императивным относится большинство современных языков программирования.
  • Функциональные языки описывают требуемый результат в виде набора вложенных друг в друга функций (Haskell).
  • Логические языки описывают требуемый результат в виде суммы логических операций (Prolog).
  • Объектно-ориентированные языки способны определять абстрактные типы данных и реализовывать основные парадигмы объектно-ориентированного программирования (ООП): инкапсуляцию, наследование и полиморфизм (C++, Java, Object Pascal, и др.). [5, С. 557-559]

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

Языки программирования – это формальные языки специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и «естественный» язык (русский, английский и т.д.), имеет алфавит, словарный запас свои грамматику и синтаксис, а также семантику[7].

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

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

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

При описании языка и его применении используют понятия языка. Понятие подразумевает некоторую синтаксическую конструкцию и определяемые ею свойства программных объектов или процесса обработки данных[4].

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

Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированными на решение прикладных содержательных задач, называют языками «высокого уровня». В настоящее время насчитывается несколько сотен таких языков, а если считать и их диалекты, то это число возрастет до нескольких тысяч. Языки программирования высокого уровня существенно отличаются от машинно-ориентированных (низкого уровня) языков. Во-первых, машинная программа в конечном счете записывается с помощью лишь двух символов 0 и 1. Во-вторых, каждая ЭВМ имеет ограниченный набор машинных операции, ориентированных на структуру процессора. Как правило, этот набор состоит in сравнительно небольшого числа простейших операций, типа: переслать число и ячейку; считать число из ячейки; увеличить содержимое ячейки на +1 и т.п. Команда на машинном языке содержит очень ограниченный объем информации, поэтому она обычно определяет простейший обмен содержимого ячеек памяти, элементарные арифметические и логические операции. Команда содержит код и адреса ячеек, с содержимым которой выполняется закодированное действие[2].

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

− алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;

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

− конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде;

− используется аппарат переменных и действия с ними;

− поддерживается широкий набор типов данных.

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

1.2 Виды языков программирования

Понятие компьютерный язык (computer language) относится к языкам, ассоциируемым с компьютерной техникой. Чаще всего, этот термин соответствует понятию языка программирования, однако это соответствие не является вполне однозначным. Так, например, языки размётки (такие как HTML) не являются языками программирования, однако определённо относятся к компьютерным языкам. Компьютерный язык, как и любой другой язык, появляется, когда требуется передать информацию из одного источника другому. Языки программирования способствуют обмену информацией между программистами и компьютерами, языки разметки текста определяют понятную для людей и компьютеров структуру документов и т. п. Нередко понятие компьютерный язык также отождествляют со сленгом, распространённым среди людей, так или иначе общающихся с компьютерами.

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

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

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

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

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

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

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

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

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

В данном пункте рассмотрим пополняющийся список популярных языков программирования, разметок и протоколов. Ссылки на описание каждого из них [21]:

  • Объектно-ориентированные языки

Объектно-ориентированные языки стали дальнейшим уровнем развития процедурных языков, основной концепцией которых есть совокупность программных объектов. Написание программы на языке представляется в виде последовательности создания экземпляров объектов и использование их методов. К ним относятся из первых языков Simula и SmallTalk, далее C++, Java.

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

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

Функциональные языки программирования

Функциональные языки являются языками искусственного интеллекта. Программа, написанная на функциональном языке, состоит из последовательности функций и выражений, которые необходимо вычислить. Основной структурой данных является связный список. Функциональное программирование принципиально отличается от процедурного. Основными функциональными языками являются Lisp, Miranda, Haskel. Логические языки программирования Языки, ориентированные на решение задач без описания алгоритмов, языки искусственного интеллекта. Представителем логического программирования является Prolog, которым написано большинство экспертных систем.

Языки сценариев (скрипты)

Языки относятся к объектно-ориентированным языкам, используются для написания программ, которые исполняются в определенной программной среде. Тексты программ, написанные на языке сценариев, можно включать в тело Html-документа. Первыми скриптами были Perl и Python, которые изначально были разработаны для операционной системы Unix, а уже в дальнейшем появились версии языков для операционных систем Windows и Macintosh. Для написания программ на языке сценариев необходимо знание процедур и функций системных библиотек. Языки, ориентированные на данные Языки ориентированы на работу с одним определенным типом данных. Например, APL работает с матрицами и векторами, Snobol обрабатывает строки, SETL выполняет операции над множествами. Особое развитие получили языки для работы с базами данных: 3GL, PL/SQL, FoxPro.

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

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

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

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

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

В 50-е годы был создан язык Форт­ран (FORTRAN от FORmula TRANslator — переводчик фор­мул). Так же, как и первые вычислительные машины, этот язык предназначался, в основном, для проведения естественнонаучных и математичес­ких расчетов. В усовершенствованном виде этот язык сохранил­ся до настоящего времени. Среди современных языков высокого уровня он является одним из наиболее используемых при про­ведении научных исследований.

После Фортрана в 1957 году появился язык Алгол (ALGOL от ALGOrithmic Language — алгоритмический язык). Этот язык так же, как и Фортран, предназначался для решения науч­но-технических задач. Кроме того, этот язык применялся как средство обучения основам программирования.

Лисп (LISP от LISt Processing – обработка списков), созданный в 1960 году Джоном Маккарти. Этот язык широ­ко используется для обработки символьной информации и при­меняется для создания программного обеспечения, имитирующего деятельность человеческого мозга.

В середине 60-х годов разработан в качестве учебного языка язык Бейсик (Beginners All-Purpose Symbolic Instruction Code, или, сокращенно, BASIC).

PL/I (Programming Language One) создан в 1967 году. По своим возможностям ПЛ/1 значительно мощнее многих других языков (Си, Паскаля).

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

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

На основе языка Паскаль в конце 70-х гг. был создан язык Аданазванный в честь одаренного математика Ады Лавлейс.

В настоящее время популярным среди программистов явля­ется язык С (Си). Данный язык был создан в лаборатории Bell в 1972 году и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы и в то же время не зависеть от конкретного типа процессора. На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (UNIX).

Еще один язык был со­здан в начале 70-х гг. группой специалистов Марсельского уни­верситета. Это язык ПрологСвое название он получил от слов «Программирование на языке ЛОГики»В основе этого языка лежат законы математической логики. [1, С.225-229]

C++ (Си++). Си++ — это объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году.

Java (Джава, Ява). Этот язык был создан компанией Sun в начале 90-х годов на основе C++. Он призван упростить разработку приложений на основе C++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка — компиляция не в машинный код, а в платформно-независимый байт-код (каждая команда занимает один байт). [6, С.25]

С# (Си Шарп). В конце 90-х годов в компании Microsoft под руководством Андерса Хейльсберга был разработан язык C#. В нем воплотились лучшие идеи Си и Си++, а также достоинства.

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

Большинство современных языков программиро­вания — объектно-ориентированные. Среди них последние вер­сии языка Turbo PascalC++, Ada и др. В настоящее время ши­роко используются системы визуального программирования Visual Basic, Visual C++, Delphi и др. Они позволяют создавать сложные прикладные пакеты, обладающие простым и удобным пользовательским интерфейсом.[2]

ГЛАВА 2. ОБЗОР СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ДЛЯ РАБОТЫ С «БОЛЬШИМИ ДАННЫМИ»

2.1. Возможности синтаксиса и использования

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

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

Scala [1]

Scala является популярным языком программирования, и, скорее всего, большинство ученых, работающих с данными, сталкивались с ним. Это мультипарадигмальный язык, поддерживающий использование открытого исходного кода. Язык был разработан в 2003 году Мартином Одерским. Scala – это сокращенная форма «Scalable Language». Он был создан для того, чтобы излагать стандартные основы программирования элегантным, безопасным и лаконичным образом.

Если вы знакомы с синтаксисом Java, вы можете быстро освоить Scala. Изучение этого языка значительно проще, если вы знаете другие языки, такие как Python, C или C ++. Многие предпочитают Scala, так как он стабильный, гибкий, быстрый и масштабируемый. Написание программного кода в Scala организуется и выполняется довольно быстрее по сравнению с Python. При этом его можно применять Scala для создания прибыльных продуктов, которые работают с огромным количеством данных.

Julia [2]

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

Этот язык программирования является современным, высокопроизводительным и значительным, был создан группой математиков из Массачусетского технологического института (MIT) и ученых-компьютерщиков. Данный язык, в основном, применяется для манипуляции большим количеством данных и научных расчетов. Если вы раньше работали с такими языками как Matlab, R или Python, то Вы быстро привыкнете к Julia. Скорость Julia делает его отличным языком для машинного обучения и науки о данных.

JavaScript

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

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

Swift [3]

Если вы являетесь поклонником продукции Apple и Вам нравится использовать их многочисленные устройства и их привлекательную iOS, скорее всего, вам понравится Swift. Этот язык программирования является открытым, гибким и простым. Apple создала его для приложений OS x и iOS. Swift основан на лучшем из Objective-C и C, но без ограничений адаптируемости C. Это отличный язык для начинающих из-за его точного, но обширного синтаксиса и быстрой скорости работы приложений.

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

Golang [4]

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

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

Spark [5]

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

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

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

2.2 Программирование в разработке приложений для Аndroid

Java - это язык программирования, впервые выпущенный Sun Microsystems еще в 1995 году. Его можно найти на самых разных типах устройств. Мы можем использовать его на вашем настольном ПК и даже на Raspberry Pi. Java не компилируется с собственным процессорным кодом, а скорее опирается на «виртуальную машину», которая понимает промежуточный формат, называемый байт-кодом Java. Каждая платформа, на которой работает Java, нуждается в реализации виртуальной машины (ВМ). На Android оригинальная виртуальная машина называется Dalvik. Google также начал предварительный просмотр своей виртуальной машины следующего поколения под названием ART. Задача этих виртуальных машин состоит в том, чтобы интерпретировать байт-код, который на самом деле является просто набором инструкций, аналогичных машинному коду, найденному в ЦП, и выполнять программу на процессоре. Виртуальные машины используют различные технологии, включая своевременную компиляцию (JIT) и своевременную компиляцию (AOT), чтобы ускорить процессы. Все это означает, что мы можем разрабатывать приложения для Android в Windows, Linux или OS X, а компилятор Java преобразует исходный код в байт-код. Это, в свою очередь, выполняется на встроенной в Android виртуальной машине. Это отличается от модели, используемой iOS, которая использует собственный компилятор, чтобы превратить Objective-C в машинный код ARM. Java используется для разработки под Android, потому что он очень популярен среди разработчиков, он не имеет сложностей с арифметикой указателей. Поскольку он работает на виртуальной машине, нет необходимости перекомпилировать код для каждого устройства, на котором он использовался. Хотя скорость является проблемой для JAVA, тем не менее, ее популярность и преимущества перевешивают скорость.

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

Kotlin - это язык программирования со статической типизацией, который работает на виртуальной машине Java, а также может быть скомпилирован в исходный код JavaScript. Он был выпущен для широкой публики в феврале 2016 года. Его основная разработка - это команда программистов JetBrains из Санкт-Петербурга, Россия (название происходит от острова Котлин, недалеко от Санкт-Петербурга). В мае 2018 года команда Google Android объявила, что Kotlin теперь является официальным языком для разработки Android. Разработчики использовали Kotlin для создания приложений для Android в предыдущие годы, но Google только что объявил о поддержке этого.

И Kotlin, и Java можно использовать для создания приложений для Android. Теперь вопрос: Какая причина может быть использовать тот или иной язык программирования?

РАЗНИЦА МЕЖДУ KOTLIN И JAVA

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

Функция расширения:

Функция расширения может быть разработана на примере (Рисунок 1).

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

Рисунок  1. Пример расширения

 «Kotlin предоставляет возможность расширять класс новыми функциями без необходимости наследования от класса или использования любого типа шаблона проектирования, такого как Decorator. Это делается с помощью специальных объявлений, называемых расширениями. Kotlin поддерживает функции расширения и свойства расширения». Эта функция расширения отсутствует в Java. Для обеспечения функциональности функций расширения обычно используются платформы Android. Но Android Framework иногда усложняет ситуацию. Java предоставляет только одно решение - создание оболочек. Но Котлин дал нам преимущество функции расширения, которая устранит трудности, связанные с платформой Android.

Конструкторы[5]:

Kotlin может иметь как первичный конструктор, так и вторичный конструктор. Ключевое слово «конструктор» используется для объявления вторичного конструктора. Всегда следует ссылаться на первичный конструктор.

Рисунок  2. Конструктор на языке Kotlin

В приведенном выше примере (Рисунок 2) первичный конструктор имеет 3 параметра, а вторичный конструктор имеет 4 параметра. В случае перегрузки конструктора в JAVA код выглядел бы так (Рисунок 3):

Рисунок 3. Конструктор на языке Java

 Эта вторичная функция конструктора отсутствует в Java. Полезность вторичного конструктора заключается в том, что он сокращает количество строк кода.

Null Safety:

Одна из наиболее распространенных ошибок во многих языках программирования, включая Java, заключается в том, что доступ к элементу пустой ссылки приведет к исключению пустой ссылки. В Java это будет эквивалентно NullPointerException или NPE для краткости.

Kotlin использует функцию под названием Null Safety для обработки ситуации с указателем NULL. Если это явно не вызвано, Kotlin не генерирует исключение NullPointerException.

При программировании на Kotlin исключение Null Pointer не нарушает поток кода в отличие от JAVA. Это дает вывод как NULL.

Lazy-Loading:

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

Анализируя, мы расшифровали, что у Java и Kotlin есть свои преимущества и недостатки. С точки зрения начинающих, Java является лучшим вариантом по следующим причинам:

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

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

 Думая с точки зрения разработчиков, Kotlin будет предпочтительнее по следующим причинам:

1. Это делает разработку Android намного проще;

2. Kotlin помогает уменьшить количество ошибок и ошибок в коде;

3. Kotlin безопаснее;

4. Kotlin более лаконичен.

«Dart — язык программирования, созданный Google. Dart позиционируется в качестве замены/альтернативы JavaScript» [2]. Язык программирования Dart был выпущен компанией Google в 2011 г. И в то время он ещё не поддерживался современными браузерами, но веб-разработчики могли сконвертировать его код в код языка JavaScript. Для этого в последние версии браузеров того года был встроен компилятор Dart в JavaScript — dart2js.

Первый полноценный пакет языка Dart SDK 1.0 включал все необходимые инструменты для создания как простейших скриптов, так и полноценных веб-приложений. В данный пакет вошла нетребовательная к ресурсам и в то же время мощная среда разработки Dart Editor, среди возможностей которой — автозавершение кода, рефакторинг, переход к определениям, отладка и система подсказок и предупреждений. Одним из важнейших инструментов пакета была изменённая версия браузера Chromium с виртуальной машиной Dart VM — браузер Dartium, что позволял запускать нативный код. Кроме того, отладка кода осуществлялась непосредственно в Dart Editor, из чего следует, что веб-программист способен мгновенно увидеть результат своей работы.

Выделяются следующие наиболее примечательные особенности языка Dart:

Автоматическая инициализация полей. Если в списке аргументов конструктора перед именем аргумента идет this, поле с этим именем будет автоматически инициализировано значением аргумента;

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

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

Функции. Как в большинстве современных языков, функции Dart — объекты первого класса, с замыканиями и облегчённым вариантом синтаксиса. Любая функция — это объект, возможности изменения которого практически безграничны. При этом Dart располагает несколькими способами создания функций — именованные функции и анонимные функции;

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

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

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

Удобство разработки. Синтаксис максимально прост для начинающего разработчика;

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

Среда разработки. Dart поддерживается всеми популярными IDE: IDEA, WebStorm, Atom, Emacs, Visual Studio, Sublime Text, Vim;

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

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

Несмотря на представленные преимущества, Dart имеет и недостатки, вследствие чего он не стал заменой JavaScript:

Малое сообщество. Синтаксис максимально прост для начинающего разработчика;

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

Как итог, в большинстве случаев вполне достаточно применения JavaScript, который хорошо подходит для создания базовой динамичности на странице, но как только приложение начинает разрастаться, можно заметить его недостатки. Поэтому разработчики Google создали Dart. И вполне вероятно, что Dart, наравне с JavaScript, в обозримом будущем распространится в среде веб-разработки. Принципиальная разница между JavaScript и Dart в том, что JavaScript основан на прототипах, а Dart — на объектах.

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

 В среде Visual C# с помощью платформы .NET Framework возможно создание приложений Windows, веб-служб, средств баз данных, компонентов, элементов управления и многое другое.

Особенности языка C#:

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

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

Рассмотрим приложение книжного интернет-магазина, которое дает возможность пользователю просматривать определенный перечень платных книг в интернете.

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

1) Кнопки навигации по приложению.

2) Элемент frame.

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

string path = System.IO.Path.GetFullPath("book.jpg");

private void Home_Click(object sender, RoutedEventArgs e)

{

 myFrame.Navigate(Class1.Mp);

Background = new SolidColorBrush(Colors.White);

playvideo = true;

}

Для оформления главной страницы приложения, требуется разбить элемент Grid, находящийся в элементе Grid главного окна на 2 строки и 4 столбца, для размещения в 1 строке кнопок навигации по разделам приложения, а во 2 строке элемента Frame.

Затем требуется поместить 4 кнопки навигации в 0 строку, эти кнопки будут иметь название «Домой» – выход на главную страницу приложения, кнопка «Книги» – переход на Page с книгами, кнопка – «Манги» – переход на Page с мангами, и кнопка выход.

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

private void Button_Click_1(object sender, RoutedEventArgs e)

{

myFrame.Navigate(Class1.M);

Background = new ImageBrush(new BitmapImage(new Uri(path)));

playvideo = false;

StartVideo();

}

private void Exit_Click(object sender, RoutedEventArgs e)

{

Close();

}

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

Рисунок 4. Книжный интернет-магазин

Определение MySQL. MySQL — это система управления реляционными базами данных с открытым исходным кодом. Имя MySQL — это сочетание имени дочери соучредителя Майкла Видениуса «My» и SQL - аббревиатуры для языка структурированных запросов. MySQL является продуктом корпорации Oracle. MySQL поддерживает много стандарта SQL [1].

Что касается операционной системы, то MySQL поддерживается практически всеми операционными системами, такими как Windows, Mac OS X, Linux, BSD, UNIX, z / OS, Symbian, AmigaOS. Система баз данных MySQL используется в сети для добавления, доступа и управления данными в Интернете. В MySQL инструмент phpMyAdmin отвечает за предоставление графического интерфейса и интерфейса SQL.

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

Определение PostgreSQL. PostgreSQL — это система управления объектно- реляционными базами данных с открытым исходным кодом. Группа глобального развития разрабатывает PostgreSQL. Он использует множество стандартов SQL. PostgreSQL полностью совместим с ACID. Поддержка внешнего ключа, триггеры и объединение доступны в PostgreSQL [2].

PostgreSQL поддерживается операционными системами Windows, Mac OS X, Linux и BSD, но не операционными системами UNIX, z / OS, Symbian, AmigaOS. Язык программирования PostgreSQL очень расширяем. PostgreSQL использует инструмент pgAdmin для обеспечения графического интерфейса и интерфейса SQL.

PostgreSQL предлагает возможность онлайн резервного копирования. Он предоставляет временные таблицы, а также материализованное представление и это также обеспечивает объект предметной области.


 

ЗАКЛЮЧЕНИЕ

Высокоуровневые языки программирования, в плане создания ПО, стали всё по большей части удаляться от машинных кодов и реализовывать различные, помимо процедурного, парадигм программирования. К ним относят также и реализацию объектно-ориентированных принципов. C++, Java, Python, JavaScript, Ruby… – спектр языков данного типа наиболее популярен и востребован сегодня. Они предоставляют больше возможностей для реализации разнообразного ПО и нельзя однозначно определить «специализацию» каждого из них.

В последнее время набирает популярность и иной вид программирования - функциональное (дальнейшее развитие уровня языка). Здесь уже другой вид абстракции для вычислений – функции, которые берут в качестве аргументов набор функций и возвращают другую. Роль переменных играют те же функции (привычные нам переменные – просто константные выражения, аналогичные final перед объявлением типа в Java). Собственно функция замкнута в своей области видимости, результат её работы зависит только от переданных аргументов. Отсюда вытекают два замечательных свойства:

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

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

Однако и порог вхождения выше, чем для ООП: для эффективного кода необходимо строить программу, описывая в виде функций алгоритм выполнения. Но также для чистого функционального стиля неплохо бы знать азы логики и теории категорий. Наиболее популярные – Haskell, Scala, F#. Но не бойтесь, в Java (как и в других современных языках третьего поколения) появились элементы функционального программирования и их возможно комбинировать вместе с ООП.

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

Построение программ требует знание основ дискретной математики, логики предикатов, средств ограничений и других разделов математической логики. Наиболее популярный активный язык – Prolog.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Доусон М. Программируем на Pyton. – СПб.: Питер, 2017. – 416
  2. Мэтиз Э. Изучаем Python. Программирование игр, визуализация данных, веб-приложения. – Спб.: Питер, 2017. – 496 c.
  3. Химич А.В. Сравнительный анализ языков программирования: Паскаль, C++, Python // Молодежный научный форум: электр. сб. ст. по мат. XI междунар. студ. науч.-практ. конф. № 10(11). URL: https://nauchforum.ru/archive/MNF_interdisciplinarity/10(11).pdf (дата обращения: 21.08.2019) Базовые средства программирования/ В.Н. Шакин. - М.: Форум: НИЦ ИНФРА-М, 2015. - 304 с.
  4. Введение в специальность программиста: Учебник / В.А. Гвоздева. - 2-e изд., испр. и доп. - М.: ИД ФОРУМ: НИЦ Инфра-М, 2013. - 208 с.
  5. Голицына О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - 3-e изд., перераб. и доп. - М.: Форум: ИНФРА-М, 2015. - 400 с
  6. Ездаков, А. Л. Функциональное и логическое программирование: учебное пособие / А.Л.Ездаков. - 2-е изд. - М. : БИНОМ. Лаборатория знаний, 2011. - 119 с.
  7. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с.
  8. Каймин В.А.Информатика: Учебник/ Каймин В. А., 6-е изд. - М.: НИЦ ИНФРА-М, 2015. - 285 с
  9. Культин Н. Б. Основы программирования в Delphi XE. — СПб.: БХВ-Петербург, 2011. — 405 с.
  10. Культин, Н. Б. Основы программирования в Delphi 7 / Н.Б. Культин. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2011. — 640 с.
  11. Масленникова, О. Е. Основы искусственного интеллекта: учеб. пособие / О. Е. Масленникова, И. В. Гаврилова. - 2-е изд., стер. - М.: ФЛИНТА, 2013. - 282 c.
  12. Машнин Т. С. Современные Java-технологии на практике. — СПб.: БХВ-Петербург, 2010. — 560 с.
  13. Монахов В. В. Язык программирования Java и среда NetBeans. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2011. — 703 с.
  14. Окулов, С. М. Основы программирования / С. М. Окулов. - 5-е изд., испр. - М.: БИНОМ. Лаборатория знаний, 2011. - 440 с.
  15. Осипов Д. Л. Базы данных и Delphi. Теория и практика. — СПб.: БХВ-Петербург, 2011. — 746 с.
  16. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2015. - 416 с.
  17. Программирование на языке Object Pascal: Учеб. пос. / Т.И.Немцова и др; Под ред. Л.Г.Гагариной. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2013. - 496 с.
  18. Программирование на языке высокого уровня. Учебное пособие / Т.И. Немцова; Под ред. Л.Г. Гагариной. - М.: ФОРУМ: ИНФРА-М, 2015. - 496 с.
  19. Программирование на языке Си/А.В.Кузин, Е.В.Чумакова - М.: Форум, НИЦ ИНФРА-М, 2015. - 144 с.
  20. Технология разработки программного обеспечения: Учеб. пос. / Л.Г.Гагарина, Е.В.Кокорева, Б.Д.Виснадул; Под ред. проф. Л.Г.Гагариной - М.: ИД ФОРУМ: НИЦ Инфра-М, 2013. - 400 с.
  21. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - 3-e изд., перераб. и доп. - М.: Форум: ИНФРА-М, 2015. - 400 с.