Добавлен: 25.04.2023
Просмотров: 400
Скачиваний: 4
СОДЕРЖАНИЕ
1. Эволюция языков программирования
2. Проблемы выбора языков программирования при разработке кроссплатформенных приложений
2.1. Сложности разработки кроссплатформенных приложений
2.2. Критерии выбора языка программирования для современных кроссплатформенных приложений
2.3. Совмещение нескольких языков программирования
2.4. Выбор средств реализации пользовательского интерфейса
2.5. Оценка практического опыта реализации кроссплатформенных приложений
Введение
Актуальность темы исследования
В настоящее время роль персонального компьютера, как единственного инструмента для выполнения программ и общения через интернет, стала заметно снижаться. Появилось множество новых устройств - смартфоны, планшеты, умные часы и телевизоры, другая бытовая техника. Большинство пользователей в своей повседневной жизни используют несколько устройств и хотят использовать знакомые приложения на каждом из них. Для создания программ для различных устройств и платформ существует множество инструментов, зачастую в корне различающихся используемыми технологиями.
Одним из первых шагов при создании любой программы является выбор языка программирования. А с кроссплатформенными приложениями эта проблема встает особенно остро. В данной работе рассматриваются факторы, влияющие на выбор языка разработки. Приведены примеры использования возможных языков и технологий, подробно описан практический опыт применения некоторых из них при создании реальных приложений.
Основная цель работы – рассмотреть классификация современных языков программирования и критерии выбора средств и методов разработки программ.
Эта цель будет раскрываться через следующие задачи:
- Эволюция языков программирования;
- Проблемы выбора языков программирования при разработке кроссплатформенных приложений
По структуре работа состоит из введения, двух основных глав, заключения и списка литературы.
1. Эволюция языков программирования
Технология программирования имеет активную динамику развития в связи с тем, что появляются все новые и новые потребности в области информационных технологий.
Язык программирования - система обозначений для описания алгоритмов и структур данных, определенная искусственная формальная система, средствами которой можно выражать алгоритмы.[1]
Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов языков программирования. Смысл появления такого языка - упрощение программного кода.
С каждым днём наш мир становится более мобильным и информационным. Всё больше и больше компьютеры вступают в нашу повседневную жизнь и чтобы облегчить наше общение с ними создаётся новое ПО с помощью различных языков программирования.
На заре компьютеризации (в начале 1950-х г.г.), машинный язык был единственным языком, большего человек к тому времени не придумал. Языки низкого уровня мало похожи на нормальный, привычный человеку язык. Большие, громоздкие программы на таких языках пишутся редко. Зато если программа будет написана на таком языке, то она будет работать быстро, занимая маленький объем и допуская минимальное количество ошибок. Чем ниже и ближе к машинному уровень языка, тем меньше и конкретнее задачи, которые ставятся перед каждой командой.
Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (то есть немашинные языки), которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят «исходный код» (гибрид английских слов и математических выражений, который считывает машина), и в конечном итоге заставляет компьютер выполнять соответствующие команды, которые даются на машинном языке.
С появлением языков высокого уровня программисты получили возможность больше времени уделять решению конкретной проблемы, не отвлекаясь особенно на весьма тонкие вопросы организации самого процесса выполнения задания на машине. Кроме того, появление этих языков ознаменовало первый шаг на пути создания программ, которые вышли за пределы научно-исследовательских лабораторий и финансовых отделов.
Языки программирования высокого уровня (FORTRAN, ALGOL, LISP,COBOL и т. д.) не похожи на язык ассемблера. Языки высокого уровня разработаны специально для того, чтобы можно было иметь дело непосредственно с задачей, решаемой программой. В этом качестве они иногда называются процедурными языками, поскольку описывают процедуру, используемую для решения задачи. Языки высокого уровня машинонезависимы. Программы же на языке ассемблера непосредственно относятся к той машине, на которой они должны выполняться.
Недостатком языков высокого уровня является больший размер программ по сравнению с программами на языке низкого уровня. Поэтому в основном языки высокого уровня используются для разработок программного обеспечения компьютеров и устройств, которые имеют большой объем памяти.
А разные подвиды ассемблера применяются для программирования других устройств, где критичным является размер программы.Языки программирования высокого уровня отличаются от предыдущих повышением эффективности труда разработчиков за счет абстрагирования от конкретных деталей аппаратного обеспечения. Одна инструкция языка высокого уровня соответствовала последовательности из нескольких низкоуровневых инструкций, или команд.[2]
В настоящее время число новых языков программирования увеличивается постоянно. Таким образом, на данный момент известно более двух с половиной тысяч языков программирования. Существуют два главных требования для языков программирования: их близость к обычному профессиональному языку определенной сферы деятельности и простота реализации.
Противоречивость требований стимулирует непрерывный процесс создания новых языков и доработки существующих.
В таблице 1.1 рассмотрены современные языки программирования.
Таблица 1.1 – характеристика современных языков программирования
|
Языки программирования |
Обзорная информация |
|
Язык Dart (компания Google) |
Объекты в Dart определяются с помощью классов и интерфейсов, как в C++ или Java. Идея его создания основана на том, чтобы сделать язык таким же привычным, гибким и динамичным как JavaScript. |
|
Go (компания Google) |
Создан для легкого программирования, подходящий для всего - от разработки приложений до программирования систем. Язык больше похож на C или C++, чем на Java или C#. Однако, как и последние языки, Go включает в себя такие современные функции, как очистка памяти от ненужных данных, отражение текущих процессов выполнения и поддержку параллельности. |
|
Ора |
Создан для того, чтобы связать в себя интерфейс пользователя, логику сервера и базу данных ввода-вывода. Компилятор самостоятельно решает, где запушена программа и выполняет написанный код. Среда выполнения Opa объединяет собственный веб-сервер и систему управления базой данных, которые не могут быть заменены самостоятельными альтернативами. Opa поставляется бесплатно и на данный момент доступен для 64-х битных Linux и Mac OS X платформ, другие же порты пока разрабатываются.[3] |
|
Sketch |
Позволяет при написании программ опускать некоторые участки кода, заполняя эти промежутки самостоятельно при этом оптимизируя получившиеся конструкции. Основной идеей, реализованной в виде компилятора языка Sketch, является метод поиска оптимального решения определенной задачи. Известно, что любая логическая и математическая задача может быть решена несколькими путями, количество которых, в некоторых случаях, может стремиться к бесконечности. |
|
Wolfram Alpha |
Основан на обширной базе знаний при помощи которой можно создавать достаточно сложные приложения, не прибегая к процессу традиционного программирования. Wolfram Language является языком, опирающимся на огромную базу знаний, в которой заключены все типовые вычислительные операции. |
Многие из этих языков еще находятся на стадии разработки, тем самым можно сделать вывод о том, что в настоящее время, имея базу из двух с половиной тысяч языков программирования нет ни одного универсального.
На сегодняшний день существуют несколько языков программирования, которые имеют перспективные направления для развития. К их числу относятся: Elm, Rust, Kotlin, Crystal, Elixir. Они доказали свою состоятельность путем создания сильных сообществ, но они до сих пор не используются большинством консервативных IT-компаний.
На рисунке 1 изображен уровень популярности четырех из пяти языков программирования.
Рисунок 1- Популярность Elm, Rust, Kotlin, Elixir (на основе данных StackOverflow и GitHub)[4]
В будущем можно ожидать новые операционные системы и языки программирования, разработанные с внедрением технологий виртуализации, так как они внедрилась не только в процесс создания прикладных программ, но и в процесс разработки оборудования[5]. Но на данном этапе, можно предположить, что хотя бы один из рассмотренных перспективных языков в будущем заменит существующие стандартные языки программирования.
2. Проблемы выбора языков программирования при разработке кроссплатформенных приложений
2.1. Сложности разработки кроссплатформенных приложений
Перед разработчиками приложений встает проблема разработки кроссплатформенных приложений, способных работать на разных устройствах и операционных системах. Например, на персональных компьютерах под управлением операционных систем Windows, Linux или macOS, на телефонах, планшетах, телевизорах и умных часах под управлением мобильных операционных систем Android и iOS или в веб - браузерах. Хорошим примером такой универсальной программы может служить программа облачного хранения файлов Dropbox, имеющая приложения для персональных компьютеров, мобильных устройств и веб-браузера.
Но далеко не каждая компания может себе позволить разработку под каждую из платформ. В связи с этим встает вопрос об оптимизации процесса разработки для нескольких платформ. В настоящий момент программисты не могут исходить в выборе языка программирования по принципу любимого языка, на котором они уже написали много программ. Потребуется предварительная проработка всех вопросов, связанных с созданием программного продукта и принятие взвешенных решений. В данной части курсовой работы проводится анализ возможных подходов к созданию кроссплатформенных приложений.
Проблема переносимости сейчас затрагивает большую часть имеющихся на рынке программ. В зависимости от назначения программ[6], проблемы переносимости проявляются по-разному. Рассмотрим возможные варианты.
Наименее всего проблема переносимости затрагивает различные вычислительные программы, например, программы расчета математических или физических моделей, которые не требуют сложного графического интерфейса. Чаще всего требуется просто ввести определенный набор данных и получить результаты. Кроме того, часто возникает задача удаленного доступа к вычислительным мощностям (в частности, суперкомпьютерам) на разных платформах через удаленные программы-терминалы, работающие с командной строкой. Такие программы-терминалы используют текстовый ввод-вывод и сравнительно легко переносятся на все платформы.
Другим примером являются программы, реализующие алгоритмы, не требующие больших вычислительных мощностей. Например, алгоритмы кодирования и декодирования аудио- и видео-информации. Мощности современных мобильных устройств хватает для выполнения таких алгоритмов, и многие пользователи хотят иметь возможность работать с данными мультимедиа не только со стационарных компьютеров. Интерфейс указанных программ состоит в последовательном выборе нескольких опций и файлов, то есть, он также достаточно примитивный. Проблема переносимости проявляется в выборе языка программирования, имеющего компиляторы для всех необходимых платформ.
В следующие группу входят приложения, использующиеся людьми в повседневной жизни. Например, приложения для доступа к электронной почте или обмена сообщениями. Они существуют для всех платформ и предоставляют одни и те же возможности в работе на различных платформах. Причем для каждой платформы создается отдельное приложение. Графический интерфейс данных программ обычно не сложен и чаще всего использует стандартные графические элементы. Проблема переносимости здесь проявляется уже не только в выборе языка программирования, но и в способе организации пользовательского интерфейса, ведь для каждой платформы рекомендованы свои правила построения интерфейса, зависящие от требований операционной системы и физических размеров устройства.