Программирование и Kotlin

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

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

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

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

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

Kotlin – универсальный язык. Это значит, что в общем-то он может использоваться почти везде. Однако на сегодняшний день основная область его применения – это разработка приложений для операционной системы Android. Компания Google выбрала Котлин в качестве приоритетного языка для этого. Здесь он постепенно заменяет собой язык Java.

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

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

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

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

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

Вычислительная машина, ее процессор не понимают такой код. "Железо" понимает двоичные коды – команды, закодированные нулями и единицами. Когда-то программисты так и писали – на машинных языках. Однако разрабатывать большие программы на них трудно. Человек думает словами, а не числами.

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

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

Транслятор переводит код с исходного языка программирования на машинный язык

Для перевода исходного кода в исполняемый для каждого ЯП разработаны специальные программы-трансляторы. Существует два основных подхода к трансляции – это компиляция и интерпретация. В случае компилятора вся программа сразу транслируется (переводится) в исполняемый вид. В результате получается отдельный второй файл. При интерпретации транслятор читает и переводит исходный код небольшими порциями. В случае "чистой интерпретации" никаких дополнительных файлов не создается.

Трансляторы бывают двух видов - компиляторы и интерпретаторы

С языка Котлин существует несколько разновидностей трансляторов. Все они работают по принципу компилятора. Однако не все переводят программу в исполняемый операционной системой код.

Чаще всего исходный kotlin-код компилируют в java-байт-код, выполняемый виртуальной машиной Java (JVM). Байт-код, который исполняет JVM, – это не совсем машинный код, он скорее похож на ассемблер, когда одной команде соответствует одно слово. Причем в случае байт-кода одна команда кодируется одним байтом.

JVM в основном работает с байт-кодом как интерпретатор, однако нередко компилирует общие и часто используемые участки кода.

Исходный код на языке Kotlin сначала компилируется в байт-код Java, а затем интерпретируется JVM в машинный код

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

Вопросы:

  1. Есть ли, на ваш взгляд, разница между понятиями "программа" и "приложение"?

  2. В каких отношениях между собой находятся языки Java и JavaScript?

  3. Как вы думаете, почему разработка одного приложения часто ведется сразу на разных языках программирования?

PDF-версия курса с ответами к практическим работам

Приложение для Android "Kotlin. Курс"