ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Все языки программирования можно классифицировать по нескольким критериям:
Компилируемые и интерпретируемые.
Компилируемые языки требуют предварительного преобразования кода, написанного на языке программирования, в последовательность машинных команд. Этот процесс называется компиляция. Получаемые на выходе бинарные файлы можно запускать непосредственно на машине под управлением операционной системы. Для программ, написанных на интерпретируемых языках, компиляция не используется, а исходный код, по сути, транслируется в машинные команды непосредственно во время работы приложения при помощи вспомогательной программы, так называемого интерпретатора. В целом производительность приложений, написанных на интерпретируемых языках ниже, чем на компилируемых.
Компилируемые: C, C++, C#, Java, Go.
Интерпретируемые: JavaScript, PowerShell, Python, PHP.
По уровню абстракции.
Низкоуровневые – это ассемблер и, с некоторыми допущениями, CIL. Написание программы на ассемблере — это фактически использование машинных инструкций. Машинный код однозначно переводится в код на ассемблере и обратно. CIL же по сути можно рассматривать как аналог ассемблера для языков семейства .NET – это низкоуровневые инструкции для JIT компилятора платформы .NET.
Высокоуровневые – это языки, используемые для написания 99.9% всех программ. Предоставляют достаточно высокий уровень абстракции, позволяющий реализовать выполнение сложных действий с помощью нескольких строк кода. В этом случае, программист избавлен от необходимости вникать в низкоуровневые особенности, а сосредоточен на реализации самой логики приложения при сохранении практически неограниченной гибкости, тем более, что некоторые высокоуровневые языки позволяют включать в свой код вставки на ассемблере.
Высокоуровневые языки обеспечивают реализацию синтаксиса языка и базовые возможности, поверх которых обычно формируются дополнительные библиотеки, платформы, подключаемые компоненты и дополнительные технологии. Существуют как коммерческие библиотеки, так и библиотеки с открытым кодом, разрабатываемые сообществом программистов-энтузиастов или финансируемые коммерческими компаниями. Чем более популярен язык, тем большее количество облегчающих и ускоряющих разработку приложений сторонних библиотек доступно.
No Code – приложение проектируется на основе готовых компонентов, блоки которых размещаются в нужной последовательности, затем настраиваются их параметры, обычно с помощью визуального редактора самой платформы. Это по сути конструктор, не требующий знаний языков программирования. В последнее время платформы No Code начинают пользоваться все большей популярностью, но их область применения ограничена набором модулей и их возможностей. Каждая платформа специализируется обычно на каком-либо определенном типе приложений, например создании веб-сайтов, интернет-магазинов, чат-ботов, несложных мобильных приложений.
Low Code – многие из No Code платформ также предоставляют возможности создания дополнительных модулей с помощью своего языка, либо одного из высокоуровневых с использованием библиотек разработки – SDK платформы. Это добавляет гибкости в случае, если требуется нестандартный или какой-то новый функционал, который платформа по умолчанию не имеет. Очевидно, что для использования Low Code платформ требуется знание языка программирования, но в целом для достаточно стандартных задач Low Code (как и No Code) позволяет сэкономить время разработки за счет использования готовых компонент и сосредоточиться на написании нестандартного функционала. В целом, гибкость таких решений все равно ограничена особенностями реализации платформы.
Универсальные и специализированные.
Универсальные позволяют решать широкий круг задач, в отличие от специализированных, например:
Языки баз данных, которые, в свою очередь, тоже можно разделить на подтипы:
- Реляционные: SQL, T-SQL, PL/SQL.
- Time Series: InfluxQL.
- NoSQL: MQL.
Математические: Fortran, LISP, F#. Используются для выполнения математических вычислений, обработки данных. LISP создавался изначально как язык для исследований в области искусственного интеллекта, но также существуют его специализированные диалекты для AutoCAD (САПР) и Audacity (обработка аудио).
Machine Learning: Python, R. Несмотря на то, что Python по факту является универсальным языком, простота его синтаксиса и огромное количество библиотек с готовыми алгоритмами для подготовки и обработки данных, созданию и обучению нейронных сетей и обширный математический аппарат, привели к его небывалой популярности в области Data Analysis и Machine Learning. По факту, он стал стандартом ML разработки. Для языков С++ и C#, например, также существуют библиотеки ML, но более высокий порог освоения самих языков ограничивает их популярность для решения подобных задач.
Языки веб-разработки: JavaScript, TypeScript, PHP, HTML, CSS.
Объектно-ориентированные и процедурные.
В процедурных языках описываются действия в виде процедур и последовательность их вызова, которые также могут объединяться в подпрограммы. В объектно-ориентированных вводятся понятие классов объектов, содержащих не только данные, но и операции, изменяющие состояние объекта этого класса. Все объектно-ориентированные языки реализуют четыре базовых принципа: абстракция, инкапсуляция, наследование, полиморфизм. На основе принципов ООП были разработаны шаблоны проектирования – стандартные рекомендуемые подходы используемые для разработки архитектуры приложения или отдельных компонентов, а также сами принципы разработки – SOLID (single responsibility, open–closed, Liskov substitution, interface segregation и dependency inversion).
Кроссплатформенность.
Большинство современных высокоуровневых языков являются кроссплатформенными (программу можно запускать на разных семействах операционных систем). Часть из них как C/C++ являются кроссплатформенными на уровне компилятора, т.е. при сборке под конкретную платформу требуется специализированный компилятор. А например, C# программа, построенная на базе .NET Core (включая более поздние .NET 5 и т.д.) являются кроссплатформенными этапа выполнения за счет использования промежуточного низкоуровневого языка СIL. Т.е. тот же код может выполняться как на Linux и MacOS, так и Windows машинах.
Специалисты компании "Кросс-Информ" обладают компетенцией, подтвержденной сертификатами Microsoft и Brainbench, и большим опытом разработки на следующих языках программирования:
- Универсальные: C, C++, Go, C#
- веб-разработка (frontend): HTML, JavaScript, TypeScript, CSS
- Машинное обучение: Python
- Автоматизации управления ИТ инфраструктурой: Powershell
- Языки баз данных: SQL, T-SQL, PL/SQL, InfluxQL, MQL