<Назад
Выбираем язык программирования

Мы уже разобрались с направлениями разработки: фронтенд, бэкенд и фулстэк. Если хотите освежить память, то вот ссылка.


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


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


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


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


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


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


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


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


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


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


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


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


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


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


Высокоуровневые языки программирования


Python


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


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


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


Java


Это компилируемый язык программирования со строгой статической типизацией. 


Он основан на концепции объектно-ориентированного программирования (ООП). 


Он поддерживает многопоточность и на нем можно писать кроссплатформенные решения. 


Этот язык широкого используется для разработки корпоративных приложений, веб-сервисов и других ИТ решений.


JavaScript


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


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


Этот язык может работать не только на клиентской стороне, но и на серверной. Для это была создана среда Node.js. 


Swift


Это мультипарадигменный компилируемый язык программирования общего назначения. 


Создан компанией Apple для разработки нативных iOS и macOS приложений.


Kotlin


Это современный язык программирования, который был создан компанией JetBrains как альтернатива Java. 


Он работает на платформе Java Virtual Machine (JVM) и совместим с Java-кодом. 


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


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


С#


Это компилируемый язык программирования общего назначения. 


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


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



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


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


Язык имеет простой и лаконичный синтаксис, который легко читать и писать. 


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


C++


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


Он был разработан как расширение языка Cи с добавлением возможностей объектно-ориентированного и обобщенного программирования. 


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


Он поддерживает множество парадигм программирования, таких как процедурное, объектное, функциональное и метапрограммирование.


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


Rust


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


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


На нем можно создавать высокоэффективные веб-приложения. 


Rust сопоставим по скорости и возможностям C++ / Си, однако даёт большую безопасность при работе с памятью, что обеспечивается встроенными в язык механизмами владения и заимствования.


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


Существует несколько низкоуровневых языков, но, на мой взгляд, лидер среди них - Assembler.


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


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


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


Есть 2 сферы, в которых вы просто обязаны знать этот язык:

1. разработка операционных систем;

2. обратная разработка приложений (Reverse Engineering).


Выбираем язык


Выбор языка зависит от ваших желаний.


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


Если хотите разрабатывать веб и кроссплатформенные мобильные приложения, то выбирайте JavaScript. Тут вы и бэкенд сделаете на Node.js, и веб-приложение на React.js, под который разработанно большое количество фреймворков. Когда освоите React.js, то сможете перейти на ReactNative и разрабатывать кроссплатформенные мобильные приложения.


Если хотите универсальный язык, то присмотритесь к Rust. Это молодой, но очень быстроразвивающийся язык программирования. У него активное коммьюнити и отличная документация. Он вобрал все преимущества Си, С++ и других языков, но избавил программистов от лишней головной боли. На текущий момент, у Rust слабый фронтенд. Gui библиотеки находятся на стадии активной разработки. Но в ближайшем будущем эта ситуация измениться и появятся устойчивые GUI Фреймворк, написанные на Rust.


Если вы хотите разрабатывать игры, то начинайте с изучения С++ или С#, на которых написаны основные игровые движки. 


Заключение


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


ЗЫ: Если вам нужен ментор на пути становления программистом, то я всегда к вашим услугам.

Хэштеги:
#хочукодить
Поделиться:

Самое свежее

Состав команды разработки

В этой статье мы рассмотрим состав команды разработки ИТ решения

#процессразработки

Простыми словами о графах

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

#графы
#алгоритмы
#rust

В чем отличие аутсорсинга разработки от аутстаффинга ИТ-сотрудника для разработки?

В этой статье разберемся, что такое аутсорс- и аутстафф-разработка.

#процессразработки

UI/UX дизайн: Процесс создания

В этой статье поговорим об основных шагах в процессе создания UI/UX дизайна.

#процессразработки

UI/UX дизайн: Введение

В этой статье мы начинаем знакомиться с UI/UX дизайном. Это важнейший этап в разработке любого визуального интерфейса приложений.

#процессразработки

Agile, Шесть сигм и Отсутствие принципа

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

#процессразработки

Знакомьтесь, Пентест

Начинаем рассматривать один из основных методов оценки безопасности компьютерных систем и сетей на предмет потенциальных уязвимостей - тестирование на проникновение

#пентест

Сокращаем срок реализации MVP

Разберемся со сроками реализации MVP.

#процессразработки

Тестирование концепции MVP

Разбираемся с тем, как не потратить бюджеты на разработку MVP впустую

#процессразработки

Проектирование архитектуры приложений: Введение

В этой статье поговорим о процессе создания архитектуры ИТ-решения

#процессразработки

Техническое задание: Структура

В этой публикации мы рассмотрим универсальную структуру ТЗ

#процессразработки

Неверная оценка стоимости услуг ИТ подрядчика

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

#консалтинг

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

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

#шаблоныпроектирования

Выбираем направление разработки для обучения программированию

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

#хочукодить

Уровни модели OSI

В этой статье мы более подробно рассмотрим каждый из уровней модели OSI

#сети
#osi

Основные типы архитектуры приложений

В этой публикации разберемся с тем, какие бывают архитектуры приложений

#процессразработки

10 способов использования Rust Cargo

В этой небольшой статье я собрал 10 способов использования системы сборки и менеджера пакетов языка программирования Rust

#rust
#cargo

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

В этой статье рассмотрим то, как происходит документирование в Rust и рассмотрим очень полезную возможность - написание тестов через документирование.

#rust

Знакомство с моделью OSI

В этой статье начинаем рассматривать фундаментальную модель сетевого взаимодействия - OSI

#сети

CSS анимация пульсации

Простой пример того, как реализовать анимацию пульсации, используя HTML и CSS

#css

Для чего нужна ER-диаграмма в процессе разработки?

Обсудим в общих чертах, что такое ER-диаграмма и для чего она нужна.

#процессразработки

От концепции к MVP

В этой статье вы узнаете, на примере, о том, как перейти от концепции к MVP без лишних усложнений в функционале продукта

#процессразработки

Для чего нужны UML диаграммы?

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

#процессразработки

Введение в написание технического задания

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

#процессразработки

Введение в разработку

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

#процессразработки

От идеи к концепции

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

#процессразработки

Методологии управления ИТ-проектами: Waterfall, Scrum, Prince2

В этой статье рассмотрим основные методологии управления ИТ-проектами.

#процессразработки

Взвешенные графы

В этой статье мы познакомимся со взвешенными графами, алгоритмом Дейкстры и его реализацией на языке программирования Rust.

#алгоритмы
#графы
#rust

Процесс разработки: Планирование

В этой публикации мы начнем рассматривать процесс разработки. Начнем рассмотрение с процесса планирования.

#процессразработки