0

Что выбирать язык или платформу программирования?

Среда исполнения программ

Что такое платформа?

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

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

Это связано с тем, что не всегда качество языка играет решающую роль. Например, сложный язык Java не был бы хорошим языком с момента его создания, если бы не появилась виртуальная машина(платформа), которая оказалась настоящим прорывом для своего времени. Именно она вывела язык Java в самый популярный язык. Другой пример, платформа dotNet Framework также сделала популярным язык программирования C#, иначе он мог бы так и остаться простым совершенствованием С+.

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

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

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

Программные средства платформы

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

Выбор платформы близок по существу к выбору языка программирования по профессии. Потому что платформы создаются и поддерживаются крупными корпорациями. Практически все известные вам IT корпорации продвигают свои и языки и платформы программирования. Microsoft: dotNet, IBM, Oracle: Java VM.

Платформы Java

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

Байт-код, в свою очередь, может интерпретироваться в любой системе, в которой есть среда времени выполнения Java. Несмотря на то, что в Java используется интерпретатор, байт-код легко переводится непосредственно в “родные” машинные коды (Just In Time compilers) “на лету”. При этом достигается очень высокая производительность (Symantec JIT встроен в Netscape Navigator).


Структура Java EE приложения

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

Редакция Java Platform, Standard Edition(Java SE) включает большое количество библиотек классов, необходимых для создания различного рода приложений от Java-приложений для настольных компьютеров до серверных Java-приложений, а также разрабатывать встроенное программное обеспечение и программы для систем реального времени и Web-сервисов и т.д.

Используя платформу программирования Java SE, Вы можете создавать и развертывать Java-приложения для настольных компьютеров и серверов, а также разрабатывать встроенное программное обеспечение и программы для систем реального времени. Редакция Java SE включает классы, необходимые для создания Web-сервисов, и базовые компоненты Java EE (Java Platform, Enterprise Edition). Среди версией платформы Java SE в недалеком прошлом применялись Java SE 5 или «Тигр», Java SE 6, также известная как «Мустанг». Текущей версией платформы Java SE является Java SE 11, которая в течение года стала достаточно популярной.

Следующей редакцией платформы является Java EE (Java Platform, Enterprise Edition). Эта корпоративная версия платформы программирования помогает разработчикам создавать и развертывать переносимые, надежные, масштабируемые и безопасные серверные приложения на Java. Развивая возможности Java SE, Java EE предоставляет API Web-сервисов, компонентных моделей, удаленного взаимодействия и управления для реализации корпоративного программного обеспечения по принципам сервис — ориентированной архитектуры(SOA) и Web 2.0.

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

Для создания функционально насыщенных приложений на скриптовых языках можно использовать JavaFX Script, работающую поверх платформы Java SE 6 и служащую для упрощения программирования сложных пользовательских интерфейсов. JavaFX работает на основеJava. На платформе JavaFX разработчики могут создавать и развертывать полнофункциональные интернет-приложения (RIA), одинаково стабильно функционирующие на различных платформах. JavaFX расширяет возможности Java, позволяя разработчикам использовать любые библиотеки Java в приложениях JavaFX. Разработчики могут расширить свои возможности в Java и воспользоваться технологией презентаций, обеспечиваемой JavaFX для создания увлекательных визуальных образов.

Платформа программирования dotNet Framework

В 2002 г. компания Microsoft создала новую платформу разработки и выполнения программ dotNET Framework. Платформа dotNet Framework предоставила новый подход к созданию и выполнению прикладных программ (приложений). Она является полностью объектно-ориентированной и позволяет использовать уже имеющиеся типы данных и создавать новые. В dotNET под термином «тип» понимаются: классы, структуры, перечисления и другие формы данных. Платформа dotNET позволяет разрабатывать компоненты (называемые сборками), которые предоставляют другим компонентам (возможно, написанным на других языках) доступ к описанным в них типам.

Основными компонентами платформы dotNET являются:

  • новый формат выполняемых программных модулей (EXE и DLL), называемых сборками (assembly), или управляемыми модулями; их основной особенностью является использование общего (независимого от исходного языка) промежуточного языка программирования (Common Intermediate Language, CIL) и метаданных, описывающих все содержащихся в них открытые типы данных;
  • специальная виртуальная машина (общеязыковая исполняющая среда, Common Language Runtime, CLR), которая управляет компиляцией команд промежуточного языка в инструкции конкретного процессора; CLR начинает работать при каждом запуске управляемых модулей на выполнение;
  • общая библиотека классов dotNET Framework (Framework Class Library, FCL), которые реализуют все базовые функции управляемых приложений (например: работа с коллекциями, файлами, сетями, графическим интерфейсом и т. п.);
  • набор программных средств, помогающих разрабатывать управляемые модули, как например: компиляторы и отладчики; основным средством разработки является интегрированная среда разработки – Visual Studio, позволяющая автоматизировать разработку приложений на всех языках, поддерживаемых платформой dotNET.

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

Архитектура и окружение платформы dotNET

При этом следует отметить, что данная платформа активно развивается и с 2013 г. уже используется версия dotNET Framework 4.5.1. Платформа dotNET Framework позволяет также писать оконные приложения нового поколения — WPF. Эта технология позволит по — новому взглянуть на формы Windows, которые напоминают больше HTML-страницу, чем прежние WindowsForms, благодаря DirectX. Так как Windows полностью пропитана dotNet Framework, то разработчик dotNET может работать также и с сервером на Windows — благодаря ASP.NET. В паре с Silverlight — можно создавать проекты практически любой сложности.

Однако надо иметь в виду, что в dotNET все созданные приложения очень сильно привязаны к Microsoft Windows — одна операционная среда(ОС) и одна среда разработки IDE. Чего не скажешь о Java SE.

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

Выбор среди платформ

Например, язык C#, являющийся основным в dotNET, ничуть не труднее Java, а если Вы знакомы с C-подобным синтаксисом, то с легкостью освоите любой из этих языков программирования на платформе dotNet Framework и JavaVM. Неправильного выбора бояться не надо. Переучиться с одной платформы на другую не так уж сложно. Более того программист, владеющий особенностями обоих платформ будет востребован больше.

Аппаратные платформы

Win16

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

История развития платформ от компании Microsoft началась с Microsoft COM, затем MS DOS, далее появилась Win16, затем Win32, сейчас все аппаратные средства ориентированы на Win64. С точки зрения архитектуры, данные системы имеют достаточно сильные отличия. Отличия обусловлены разрядностью используемых типов данных, указателей и форматов исполняемого файла. Основным отличительным фактором является формат исполняемого файла(программы в машинном коде).К настоящему времени известно о четырех форматах исполняемых файлов.

Разработанный фирмой Microsoft COM-формат исполняемых файлов для компьютеров на базе 8-разрядных микропроцессоров мог применяться лишь для небольших программ. Одной из отличительных характеристик этих микропроцессоров была поддержка размера оперативной памяти не более 64 Кбайт. Таким образом, размер программы, выполняющейся на компьютере с 8-разрядным микропроцессором, изначально был ограничен его архитектурой. А с учетом того, что некоторая часть оперативной памяти отводилась для программ операционной системы, — реальный размер программы был еще меньше. COM-формат поддерживался операционной системой CP/M фирмы Digital Research и показал свою эффективность.

С появлением 16-разрядного микропроцессора фирмы Intel, возникла необходимость в операционной системе, которая в полной мере использовала бы его возможности. Фирма Microsoft разработала операционную систему MS-DOS. Для MS-DOS, поддерживающей сегментную организацию программы, был разработан специальный формат исполняемых файлов — MZ-формат. С точки зрения структуры, файл MZ-формата имеет три части: заголовок, таблицу размещения и программный код.

Со временем был спроектирован для использования в программах специальный программный интерфейс Windows API, с помощью которого был реализован наиболее близкий к системе способ взаимодействия с ней из прикладных программ пользователей. Win16 это первая версия Windows API для 16-разрядных ОС типа Windows. Для Win16 был разработан новый NE-формат (New Executeable code file) исполняемого файла. Исполняемый файл NE-формата состоит из двух исполняемых файлов: исполняемый файл MZ-формата и исполняемый файл NE-формата. Этот формат долгое время полностью обеспечивал потребности 16-разрядной платформы Win16, хотя и имел ряд недостатков.

Win32

Для 32-разрядных операционных систем фирма Microsoft разработала специальный формат исполняемого файла. Он получил название переносимый формат исполняемого файла (PE — Portable Executable). Это единый формат исполняемого файла, впервые реализованный в операционной системе Windows NT, выполнялся на различных аппаратных платформах, что, конечно, не означало совместимости на уровне машинных команд. Информация в PE-файле является, в основном, высокоуровневой и используется системой или приложениями, чтобы определить правила обращения с конкретным исполняемым файлом.

Основными особенностями данного формата являются: простота загрузки файла PE-формата; поддержка сплошной модели памяти; использование относительных адресов памяти, равных смещению от начала PE-файла — физическому адресу памяти, с которого начинается загруженный в память модуль. Одним из главных преимуществ плоской модели памяти, использующей 32-разрядные указатели, является возможность создания сегментов объемом до 4 Гбайт.

Сегодня повсеместно применяется Win64-код, который объединяет в себе основные возможности 32-разрядного кода и изменения, связанные с повышением разрядности. В распоряжении программиста оказываются: 64-разрядные типы данных, указатели и интерфейс Win64 API. Старые 32-разрядные типы данных не исчезли при повышении разрядности платформы (как было с 16-разрядными типами данных при переходе к Win32). Win64 допускает использование и 32-, и 64-разрядных данных. Новые 64-разрядные указатели обеспечивают возможность адресации до 16 Тбайт памяти (1 Тбайт = 1024 Мбайт). Современными бизнес-приложениями этот объем вполне востребован. Функции в Win64 API претерпели незначительные изменения.

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

Заключение

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

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

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

Если необходимо писать достаточно сложные приложения под Windows, то на сегодняшний день рекомендуется dotNET Framework. Эта платформа позволяет писать приложения, взаимодействующие с другими аналогичными приложениями и технологиями, достаточно легким способом.Основные компоненты платформы специальная виртуальная машина (общеязыковая исполняющая среда, Common Language Runtime, CLR), которая управляет компиляцией команд промежуточного языка в инструкции конкретного процессора и общая библиотека классов dotNET Framework (Framework Class Library, FCL), которые реализуют все базовые функции управляемых приложений, сделали ее достаточно простой в использовании и достаточно эффективной в разработках.

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

Широко известный онлайн-университет Skillbox является одним из лидеров в сфере дистанционного обучения программированию, включая и изучение платформ программирования для алгоритмических языков Python, Java, C++, C#. По окончанию обучения на некоторых гарантируется трудоустройство. Это тоже важно на сегодняшний день.

На образовательном IT-портале GeekBrains и Mail.Ru Group имеется первый в России онлайн-университет GeekBrains, который по популярности незначительно уступает онлайн-университету Skillbox, а в кое в чем может и опережает его. На этом портале также можно найти различные программы обучения по многим IT-направлениям, включая как платные, так и бесплатные курсы программирования на аналогичных алгоритмических и скриптовых языках.

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

brasm

Преподаватель со стажем 33 года. Кандидат технических наук, доцент.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *