Языки программирования нужны, чтобы человек мог общаться с машиной. Они представляют собой набор правил, по которым пишутся программы. Первый язык программирования появился в 1940-х годах и назывался Plankalkül.
Рассмотрим, какие бывают виды языков программирования, какой лучше выбрать, если вы хотите освоить навыки программиста.
Как устроена программа
Компьютер понимает последовательность двух цифр: 1 и 0:
- если есть напряжение в цепи — 1;
- нет напряжения в цепи — 0.
Любая программа переводится в набор машинных команд с помощью компилятора и интерпретатора. Внутри них заложены наборы правил по превращению языка программирования в машинный год.
- Компилятор получает текст программы и превращает этот текст в код и набор команд для процессора.
- Интерпретатор переводит фразу, позволяя компьютеру её выполнить.
Компиляторы и интерпретаторы для новых языков написаны на более ранних языках. Интерпретатор Python написан на C, а C — на Ассемблере.
У каждого языка своя область применения и функции. Существует 4 основных вида языков программирования: структурные, процедурные, объектно-ориентированные, функциональные.
Структурные
В основе структурных языков программа представлена как иерархическая структура блоков. Любая программа состоит из 3 структур:
- последовательность;
- ветвление;
- цикл.
Basic
К структурным языкам относится Basic. На нём можно создавать программы под свои задачи без необходимости понимать работу аппаратного обеспечения. Это простой язык для начинающих. Его изучают школьники на УПК, я сама изучала Basic и писала небольшую программку для зачёта, это было в конце 90-х годов. Современный Basic, конечно же, другой, сильно отличается, поскольку все языки программирования постоянно обновляются и совершенствуются.
Pascal
Тоже структурный язык. Он отличается строгой типизацией, часто используется в обучении, чтобы научить студентов дисциплине программирования.
Процедурные
Процедурное программирование предполагает, что программа представляет собой систему формальных предписаний, направленных на решение конкретных задач.
Процедурные языки могут быть направлены на машину — машинно-ориентированные, низкоуровневые, например Ассемблер, или на человека — высокоуровневые.
- Низкоуровневые языки ориентированы на компьютерные архитектуры, следуют указаниям, которые исходят от процессора. Это сложные и не удобные для работы языки, но созданные на них системные программы и драйверы занимают мало памяти и быстро работают.
- На высокоуровневых языках программировать легче и удобнее, пример одного из таких языков — Fortan. В них не учитываются особенности типов процессоров, программы легко переносить с одной платформы на другую.
C
Процедурный язык, позволяющий программистам представлять, как выполняются программы. Этот язык применяется в разработке операционных систем и приложений, которые требуют отзыва кода. У C небольшое число ключевых слов, простая языковая база и есть указатели на функции.
PureBasic
Ещё один процедурный язык — PureBasic. Он создан на основе синтаксиса Basic и на нём создаются программы на Windows, Mac, Linux. Код можно скомпилировать на разных платформах. Синтаксис прост, функциональность высокая.
Объектно-ориентированные
В ООП программа представлена как совокупность объектов. Каждый из таких объектов — экземпляр класса, у классов своя иерархия наследования. Объекту можно посылать сообщения, и объект на них реагирует, используя свои данные.
В ООП выделяют такие термины, как:
- объект — сущность в цифровом пространстве со своими свойствами и операциями;
- класс — тип данных, состоящий из набора переменных и функций для работы с ними;
- наследование — свойство системы, с помощью которого можно описать новый класс на основе существующего, с частично или полностью заимствующейся функциональностью;
- абстракция данных — это выделение значимой информации, исключение незначимой;
- инкапсуляция — свойство языка, с помощью которого можно связывать данные с методами;
- фреймворк — набор инструментов, материалов и технологий для программирования, среда, в которой создаётся код;
- библиотека — набор готовых функций и шаблонов, на них можно ссылаться внутри программ, получать результат без необходимости каждый раз писать много кода;
- опенсорс — культура совместной разработки. Разработчик открывает код для других разработчиков из сообщества, которые могут менять код, использовать у себя, помогают улучшить, доработать, исправить ошибки.
C++
Объектно-ориентированный язык, выросший на базе усовершенствованного C. На C++ разрабатывается программное обеспечение, операционные системы, драйвера, игры, банковские и государственные приложения, роботы, системы моделирования, прогнозирования.
Изучать его сложно, но если программист его освоил — он считается высококлассным профессионалом и может со знаниями C++ легко освоить любой другой язык.
C#
Язык, по синтаксису похожий на C++. Его используют в разработке мобильных приложений и программ для ПК, веб-сервисов. C# позволяет автоматически очищать память от не использующихся объектов.
PHP
Язык, использующийся для веб-приложений, Personal Home Page Tools. У него большое количество модулей и встроенных инструментов для программирования. Его синтаксис похож на C. Это популярный язык: на PHP работает Википедия, социальные сети.
Java
Язык, использующийся для разработки серверного программного обеспечения, клиентских приложений. Система безопасности Java контролирует исполнение программы, прерывает операции, которые превышают установленные полномочия. У Java высокая скорость выполнения задач, он не зависит от платформы. Считается основным для разработки мобильных устройств на Android.
JavaScript
Язык, который имеет слишком мало общего с Java, несмотря на похожесть названий. JavaScript по синтаксису похож на C. Этот язык используется в браузерах, с помощью него можно сделать веб-страницы интерактивными. Язык понятен для новичков и начинающих программистов, позволяет запустить программу в браузере. У JavaScript много фреймворков. На его основе работают все браузеры.
Python
Язык с чётким синтаксисом, ориентированный на повышение читаемости кода. Считается универсальным: его можно применять в веб-разработке, в работе с машинным обучением.
Delphi
Язык, разработанный на основе Object Pascal. Популярен благодаря многофункциональности, имеет много компиляторов и диалектов. На Delphi написаны плееры, мессенджеры, файловые менеджеры.
Ruby
Кроссплатформенный язык, с простым синтаксисом, динамичный, сберегает компьютерные ресурсы. Это язык, открытый для использования, изменения, распространения, с обновляемыми библиотеками. Развивается в опенсорсе. Активно используется в компаниях Airbnb, Twitter.
ActionScript
На этом языке написаны Flash-приложения. Он заточен под Flash, многофункционален в рамках этих задач, но для других задач не применим.
Функциональные
Для функционального программирования процесс вычисления определяется как вычисление значений математических функций. Здесь нет переменных. Если вызваны функции с одинаковыми аргументами, результат получается один и тот же, выходные данные зависят от входных.
Scala
Функциональный язык, созданный на базе языков Java и C#. Программы на Scala легко взаимодействуют с программами на Java. У Scala широкая область применения.
Erlang
Язык, отличающийся использованием легковесных процессов в соответствии с моделью акторов. Это математическая модель параллельных вычислений, то есть можно совершать несколько миллионов процессов одновременно. Erlang прост в изучении, можно обновлять код во время выполнения программы.
Для чего и где применяются языки программирования
Несколько примеров:
- Системное программирование и язык C применяются в частности для систем, установленных в камерах, квадрокоптерах.
- На Java и .Net разрабатываются приложения для бизнеса, банков.
- C++ и C# подходят для разработки игр, приложений, браузеров.
- На Perl, PHP, Python и Ruby проектируются сайты.
- Python также используется для статистических и аналитических рассчётов, машинного обучения.
- На Паскаль пишут программы, использующиеся в военной, аэрокосмической отрасли.
- COBOL считается очень старым языком, но по-прежнему актуален: на нём написаны банковские программы и программы для банкоматов.
Если вы ищете, с какого языка начинать изучать программирование, нужно определиться с целями — что вы хотите программировать, для чего, какие программы. Эксперты рекомендуют новичкам изучать сначала простые языки вроде Basic, JavaScript, Python, затем освоить C++, так как после него изучить другие языки будет в разы легче, а возможно даже и не потребуется, в силу универсальности C++. Применять или не применять этот совет — зависит от ваших личных предпочтений.
Литература по программированию:
- Алексей Васильев «Программирование на C++ в примерах и задачах»
- Майк МакГрат «Python. Программирование для начинающих»
- Патрик Нимейер «Программирование на Java»
- Джон Дакетт «Javascript и jQuery. Интерактивная веб-разработка»
- Робин Никсон «Создаём динамические сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5