3. Масленикова Т.В., Козлова М.А. Дифференциация естественного движения и миграции населения Костромской области [Текст] / Т.В. Масленикова, М.А. Козлова // Экономика и социум, 2016.
Колмакова Е.Н. студент 3 курса
факультет «Информационные системы и технологии» Поволжский Государственный Университет Телекоммуникаций и Информатики
Россия, г. Самара
ОБЗОР ОСОБЕННОСТЕЙ ЯЗЫКА ПРОГРАММИРОВАНИЯ KOTLIN
Статья посвящена обзору языка программирования Kotlin. Описаны его преимущества перед другими языками. Рассмотрены основные возможности, отсутствующие в Java.
Ключевые слова: Kotlin, Java, языки программирования, функции
The article provides a review of Kotlin language. Describe it is advantages over other languages. Consider the main features that not present in Java.
Keywords: Kotlin, Java, programming languages, functions
В наши дни существует множество языков программирования, среди которых есть действительно мощные и многофункциональные. Но ни один синтаксис не является универсальным. Потому, появление новых языков явление довольное частое. Рассмотрим Kotlin, один из таких языков, который подает большие надежды на будущее.
Kotlin - это новый статически типизированный язык программирования, ориентированный на платформу Java. Его главные особенности прежде всего направлены на безопасность, выразительность, краткость и универсальность кода. Однако история разработки «альтернативных» Java языков насчитывает более десятилетия, поэтому у Kotlin немало конкурентов - Scala, Fantom и Gosu, да и сама Java тоже не стоит на месте. Но всё же Kotlin имеет хорошие перспективы, и тому есть несколько причин.
Во-первых, компания JetBrains, которая занимается созданием языка, хорошо разбирается в современных инструментах разработки и за долгое время существования накопила большой опыт в области языков программирования, а также собрала сильную команду специалистов. Kotlin приходит к нам из индустрии, а не научного сообщества. Он решает реальные проблемы, с которыми сталкиваются работающие программисты сегодня.
Во-вторых, необходимость создания нового языка существует давно, но создать такой язык, который бы позволил взять (огромную) готовую кодовую базу Java, обычных Java-разработчиков, дать им новый инструмент и более эффективно продолжать разработку — такого инструмента до
появления Kotlin не существовало.
Каковы же основные особенности этого языка?
Null-безопасность. Null Pointer Exception одна из самых распространённых ошибок во многих языках программирования, в том числе и Java. Например, если создать строку, присвоить ей значение null и вызвать её в каком-нибудь методе, то во время выполнения мы получим Null Pointer Exception. В Kotlin мы получим ошибку еще на этапе компиляции. Таким образом, возможно заранее определить, будет ли переменной безопасной и содержать значение null или нет.
Отсутствие сырых типов (raw types) - обобщённых типов, употребляемых без параметров. Основной недостаток применения таких типов — потеря типовой безопасности, обеспечиваемой настраиваемыми типами. Бывает, что иногда ничего неизвестно о типе аргумента, но по-прежнему есть необходимость использовать его безопасным способом. Верным путем здесь будет написать, что мы имеем дело с объектом, не потребляющим никаких значений неизвестных типов, и имеющего верхнюю границу соответствующего параметра. Kotlin обеспечивает сокращенный синтаксис для этого: в записи Foo <*> означает Foo <out Bar>, где Bar является верхней границей для параметра типа Foo.
Отсутствие проверяемых исключений. Механизм проверяемых исключений основан на добавлении метод класса описание в явном виде всех исключений, которые он может сгенерировать. Кроме того, функция, вызывающая метод с объявленными исключениями, для каждого из них должна содержать обработчик, либо указывать этот тип как генерируемый ею в своём описании.
Например, интерфейс JDK, реализованный классом StringBuilder Appendable append (CharSequence csq) throws IOException; В этом коде описывается, что каждый раз при добавлении чего-либо к строке, эти исключения IOExceptions должны быть обработаны. Зачем? Потому что это может быть выполнение операций ввода - вывода (Writer также реализует Appendable). Так что это приводит к такого рода кода во всех местах:
try {log.append(message) } catch (IOException e ) { // Must be safe } Все это слишком громоздко, потому Kotlin не поддерживает проверяемые исключения
Шаблоны строк. Эта особенность позволяет уменьшить объем кода. Так, при формировании строки в Java приходится использовать конкатенацию, чтобы поместить значение переменной в середину строки. val apples = 4 println("I have " + apples + " apples.") В Kotlin все гораздо проще, достаточно добавить к имени переменной знак $.
val apples = 4 println("I have $apples apples.")
Свойства. Типичный класс Java представляет наличие приватных полей и методов getter и setter. Это слишком шаблонно и Kotlin позволяет
реализовать это лучше. Необходимо определить поля класса как переменные, и они являются публичными по умолчанию, а об инкапсуляции заботится компилятор, который самостоятельно генерирует getter и setter.
Классы-расширения. Это одна из самых мощных возможностей в Kotlin. Она заключается в возможности определить метод для типа отдельно от его объявления. Ниже мы имеем функцию, которая проверяет, если мы запустили версию Lollipop или выше, то она принимает целое число в качестве аргумента:
public fun isLollipopOrGreater(code: Int): Boolean {
return code >= Build.VERSION_CODES.LOLLIPOP }
Но мы можем изменить его к функции расширения, поставив тип и точку перед именем функции, и используя ключевое слово this: public fun Int.isLollipopOrGreater(): Boolean {
return this >= Build.VERSION_CODES.LOLLIPOP
}
И теперь можно вызвать эту функцию из числа 16.isLollipopOrGreater()
Это может быть любое целое число или литерал, также возможно сделать для final классов. Данные методы могут быть определены в любом месте. Все это увеличивает понятность и читаемость кода.
Классы данных. Иногда возникает необходимость написать класс, который ничего не делает, а только хранит данные. В Kotlin для такого существуют классы данных, которые помечается как data: data class Human (val name : String , val age : Int)
В данном случае компилятор, генерирует в классе Human несколько стандартных методов: equals()/hashCode(), toString() и component1(), component2(), copy(). Все эти функции используют свойства класса, объявленные в первичном конструкторе. Так, component1() возвращает name, а component2() — age. Кроме того, классы данных дают возможность возвращать несколько значений из функции, не используя кортежи, что значительно улучшает читаемость кода.
Функции высшего порядка, то есть функции, которые могут возвращать функции передавать в качестве параметров, возвращать из других функций, а также лямбда-выражения или анонимные функции - это функции, которые не объявлены, не имеют названия, но передаются как выражение.
В заключение можно сказать, что многие особенности Kotlin не новы, и пришли из других языков, но их очень ждали именно в Java. Количество проектов на нем становится все больше и больше, в будущем Kotlin мог бы стать хорошей заменой Java в больших проектах и удобным инструментом для создания небольших проектов, благодаря своей простоте гибкости, дающих разработчику больше возможностей для написания быстрого и
качественного кода.
Использованные источники:
1. Официальный сайт языка программирования Kotlin [Электронный ресурс] URL: http://kotlinlang.org
2. Многофункциональный сайт Хабрахабр [Электронный ресурс] / URL: http: //habrahabr.ru/
Комеков С. Д. студент
ФГБОУ ВПО Самарский государственный экономический университет Россия, г. Самара К ВОПРОСУ О СООТНОШЕНИИ ПРАВОВОЙ ПРОЦЕДУРЫ И ЮРИДИЧЕСКОГО ПРОЦЕССА
В статье рассматриваются юридическая процедура как правовая категория, юридический процесс как вид юридических процедур, а также соотношение понятий «процедура» и «процесс» на современном этапе развития юридической науки.
This article discusses legal procedure as a legal category, the legal process as a kind of legal procedures, and the ratio of the concepts of «procedure» and «process» in the present stage of development of legal science.
Ключевые слова: юридическая процедура, правовая категория, юридический процесс.
Keywords: course of law, legal category, legal process.
В юридической терминологии обозначается ряд понятий, которые нашли широкое применение в обиходе. К числу таких, безусловно, можно отнести термины «правовая процедура» и « юридический процесс», употребление которых характеризуется взаимосвязанностью и взаимозаменяемостью. Между тем, соотношение процедуры и процесса, возможность их отождествления и признания синонимичными в кругах ученых вызывают ряд дискуссий. Учитывая частоту, с которой в юридической литературе встречаются обозначенные термины, актуальность данного вопроса предполагается весьма существенной.
Одновременно с этим, правовая доктрина не выработала единообразного понимания категории «юридический процесс». По мнению Е. Г. Лукьяновой, многообразие подходов к определению обозначенного понятия можно свести к пяти основным направлениям. В соответствии с первым, под юридическим процессом понимается юрисдикционная и иная охранительная деятельность органов правосудия, имеющая своей целью разрешение споров о праве и применение в этой связи метода принуждения. Второй подход выражается в том, что в юридический процесс входит юрисдикционная и иная охранительная деятельность органов