
История о том, как я решил освоить python на примере реализации бота для Telegram. Что из этого вышло и чем закончилось в условиях ограничения времени в неделю.
Спойлер: толкового бота я так и не написал :)
Пользователь
История о том, как я решил освоить python на примере реализации бота для Telegram. Что из этого вышло и чем закончилось в условиях ограничения времени в неделю.
Спойлер: толкового бота я так и не написал :)
В этой статье я опишу собственные впечатления о последних версиях среды разработки RADStudio от Embarcadero и, возможно, постараюсь помочь кому-то в ответе на вопрос: «А оно мне надо?».
Сразу оговорюсь. Все описанное в этой статье является моим личным мнением и любые сравнения и характеристики, являющиеся плюсами или минусами, являются таковыми только для меня и моего способа использования инструментом. Если для Вас какие-то из указанных достоинств или недостатков так же являются таковыми – очень хорошо, но если это не так, то не стоит впадать в берсерк и начинать крестовую войну. Тут никто не воюет.
Эта статья родилась по мотивам вот этой статьи в виде полу-шутки. В той статье большая часть "проблем" является либо синтетическими и крайне редко используемыми, либо притянутыми за уши из-за ожидания соответствия языка теоретической парадигме которой, по мнению автора, язык должен соответствовать. С другой стороны не упомянуты вещи, которые мне лично действительно усложняют жизнь.
Предупреждения и ошибки, которые генерирует компилятор Kotlin
часто нужно замаскировать, либо для того, чтобы они не мозолили глаза, либо просто потому, что логика программы нуждается именно в таком коде, который приводит к сообщению об ошибке или предупреждению.
Статья основана на версии Kotlin
«1.1-М04».
Эта статья посвящена описанию механизма генерации автоматических классов компилятором Kotlin
для анонимного блока пользовательского кода. Описано в каких случаях создаются автоматические классы, где они располагаются, как реализованы и используются.
В Java
существует только один способ создания элемента кода – это лямбда-выражение, которое может реализовывать только функциональный интерфейс (подробнее см. в документации на Java
). В Kotlin
существует несколько различных способов описать объект, содержащий пользовательский код.
Всем хорошо известна особенность Kotlin
очень легко реализовывать код, позволяющий писать такие конструкции:
fun Action( cb:()->Unit ) { cb() }
fun Test() {
Action{
// Этот блок кода будет выполнен в функции
}
}
Как это реализовано и чем чревато использование такого кода в программе?
ПС: Первоначальный вариант статьи содержал логическую ошибку и неправильные выводы. Приношу всем свои извинения за этот факт. Эта статья переработана и дополнена дополнительными данными.
Сериализация (Serialize
, в последующем «сохранение») – это процесс сохранения данных объекта во внешнем хранилище.
Эта операция работает в паре с обратной – восстановлением данных, называемой десереализацией (Deserealize
, в последующем «восстановление»).
Операции сохранения и восстановления данных применяются очень часто. В классических языках программирования готовых механизмов для сохранения и восстановления данных объектов нет и, при возникновении такой необходимости, приходится создавать их самостоятельно.
В Java такие готовые механизмы существуют и, даже, в количестве более одного. Давайте разберемся, какие механизмы есть и какие возможности они предоставляют для программ на Kotlin
.
Само понятие сериализации никак не привязано к формату данных, в который будут сохранены данные, поэтому вне зависимости от того, какой результат будет получен – бинарный файл с собственной структурой, формат XML
, JSON
или даже текстовый файл – все это будет сериализацией.