Kotlin Meta
🔴️️ Мы в прямом эфире
Присоединяйтесь на любую площадку с помощью ссылок внизу и участвуйте в дискуссии о внутрянке разработки компилятора Kotlin. Поговорим с разработчиком компилятора Kotlin – Женей Желенским!
Telegram | YouTube | Twitch
Присоединяйтесь на любую площадку с помощью ссылок внизу и участвуйте в дискуссии о внутрянке разработки компилятора Kotlin. Поговорим с разработчиком компилятора Kotlin – Женей Желенским!
Telegram | YouTube | Twitch
❤5 4
Kotlin Meta
🔴️️ Мы в прямом эфире Присоединяйтесь на любую площадку с помощью ссылок внизу и участвуйте в дискуссии о внутрянке разработки компилятора Kotlin. Поговорим с разработчиком компилятора Kotlin – Женей Желенским! Telegram | YouTube | Twitch
Kotlin исполняется 14 лет
В этот день, 22.07.2011, вышла первая версия Kotlin. За 14 лет он превратился из внутреннего проекта JetBrains в основной язык разработки под Android, завоевал прочные позиции в серверной разработке, потеснив Java, и вышел на стабильный уровень в мультиплатформенной разработке.
В честь этого дня Amplicode сделали небольшую серию докладов про ConneKt и Spring + Kotlin. Также можно посмотреть на официальном канале Kotlin by JetBrains видео, выпущенное к 10-летию языка, в котором рассказывается его история.
В этот день, 22.07.2011, вышла первая версия Kotlin. За 14 лет он превратился из внутреннего проекта JetBrains в основной язык разработки под Android, завоевал прочные позиции в серверной разработке, потеснив Java, и вышел на стабильный уровень в мультиплатформенной разработке.
В честь этого дня Amplicode сделали небольшую серию докладов про ConneKt и Spring + Kotlin. Также можно посмотреть на официальном канале Kotlin by JetBrains видео, выпущенное к 10-летию языка, в котором рассказывается его история.
2🎉19❤7🥰4 4 2
🔴 Наука на Kotlin: Центр научного программирования
В это воскресенье, в 17:00, пообщаемся с Александром Нозиком: директором центра научного программирования, автором kmath и, в то же время, преподавателем общей физики в МФТИ. Также Александр был руководителем направления в JetBrains Research. Мы затронем:
• Kotlin как первый язык программирования? Как студентам даётся обучение Kotlin?
• Насколько JVM подходит для обработки научных данных? Какой есть предел и почему не выбрать C++?
• Взаимодействие JetBrains и сообщества? Насколько JetBrains заинтересован в науке?
Поговорим про это и многое другое, присоединяйтесь к стриму и задавайте вопросы!
В это воскресенье, в 17:00, пообщаемся с Александром Нозиком: директором центра научного программирования, автором kmath и, в то же время, преподавателем общей физики в МФТИ. Также Александр был руководителем направления в JetBrains Research. Мы затронем:
• Kotlin как первый язык программирования? Как студентам даётся обучение Kotlin?
• Насколько JVM подходит для обработки научных данных? Какой есть предел и почему не выбрать C++?
• Взаимодействие JetBrains и сообщества? Насколько JetBrains заинтересован в науке?
Поговорим про это и многое другое, присоединяйтесь к стриму и задавайте вопросы!
10 21 9🤝4🔥2
• Чем разработка компиляторов отличается от обычной разработки?
• Какой процесс проходит фича перед внедрением в язык? Как написать свой KEEP?
• Структура компилятора, зависимость от Intellij Idea: почему так сложилось и что с этим делать?
Обсудили это и многое другое вместе с нашим гостем из JetBrains: Евгением Желенским.
YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆12 9🥰5
Kotlin Meta
🔴 Наука на Kotlin: Центр научного программирования В это воскресенье, в 17:00, пообщаемся с Александром Нозиком: директором центра научного программирования, автором kmath и, в то же время, преподавателем общей физики в МФТИ. Также Александр был руководителем…
🔴 Мы в прямом эфире
Присоединяйтесь на YouTube, Telegram или Twitch и участвуйте в дискуссии о научном программировании на Kotlin и не только. Поговорим с директором центра научного программирования – Александром Нозиком.
Telegram | YouTube | Twitch
Присоединяйтесь на YouTube, Telegram или Twitch и участвуйте в дискуссии о научном программировании на Kotlin и не только. Поговорим с директором центра научного программирования – Александром Нозиком.
Telegram | YouTube | Twitch
Kotlin Meta
🔴 Мы в прямом эфире Присоединяйтесь на YouTube, Telegram или Twitch и участвуйте в дискуссии о научном программировании на Kotlin и не только. Поговорим с директором центра научного программирования – Александром Нозиком. Telegram | YouTube | Twitch
В какую статистическую группу попадает обратная связь данной трансляции согласно каноническим вариантам?
Anonymous Poll
22%
Стрим интересный, удалось посмотреть
5%
Тема стрима мне не интересна
5%
Тема стрима интересна, не удалось раскрыть
38%
Тема стрима интересна, жду записи в среду
11%
Тема стрима мне не интересна
19%
Я и сам своего рода стример
• Kotlin как первый язык программирования? Как студентам даётся обучение Kotlin?
• Насколько JVM подходит для обработки научных данных? Какой есть предел и почему не выбрать C++?
• Насколько компании заинтересованы в науке на Kotlin?
Обсудили это и многое другое с Александром Нозиком: директором центра научного программирования, автором kmath и, в то же время, преподавателем общей физики в МФТИ.
YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
Присоединяйтесь в это воскресенье в 17:00 на стрим про компиляторные плагины. Напишем свой компиляторный плагин с нуля, который будет модифицировать поведение
toString()
у дата-класса.Документации по этой теме не так много, поэтому для тех, кто хотел немного модифицировать Kotlin под себя, но не знал где начать – велком на стрим!
Telegram | YouTube | Twitch
Please open Telegram to view this post
VIEW IN TELEGRAM
21 5
Как вы, возможно, знаете, я против использования исключений для возврата бизнес-значений. Этот подход популярен в сообществе, и часто для сохранения подробностей об ошибке используют sealed-иерархии.
Фича, о которой я расскажу вам сегодня, не новая, но одна из моих любимых за последнее время. Она есть в других языках, но у нас она появилась относительно недавно, под экспериментальным флагом в Kotlin 2.2. Context Sensitive Resolution позволяет не писать полный путь до класса, если его можно понять из контекста. Пример этой фичи есть на картинке прикреплённой к посту. Полный список мест, где работает эта фича:
• Выражения внутри
when
• При возврате после
return
• Переменные, у которых объявлен тип
• Проверки на тип (
as
, is
)• Параметры функций
Казалось бы - у нас есть импорты, можно же просто импортнуть
Success
, но не всё так просто. Если мы имеем дело с несколькими типами, который называются Success
, импортнуть их 2 раза не выйдет - будет конфлит импортов. А с этой фичей даже импорт не нужен. А бонусом идет более хорошая поддержка в IDE. Когда я делал аналоги DSL на Swift, я всегда кайфовал от того, как удобно там работает эта фича. Нет загрязнения неймспейса, но и много буков писать не надо. Все в плюсе!Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🍌2 2❤🔥1👍1
Запустили с Эмилем тестовый стрим и поняли, что интернет-соединение вообще не вывозит. Сегодняшний стрим отменяется ввиду того, что я заспаунился в деревне с такими провайдерами (контора солнышек). Переносим его на долго, также как и следующие стримы: ориентировочно на 23 августа.
А пока – наслаждаемся летом и новостями о Kotlin в текстовом формате. Всем спасибо, что поддерживаете наш канал, он развивается благодаря вам
Please open Telegram to view this post
VIEW IN TELEGRAM
😨15😭10 8🌚4
runSuspendCatching
Ещё несколько лет назад появился issue к репозиторию kotlinx.coroutines с предложением о создании функции, которая должна работать также, как runCatching, но при этом введя дополнительную логику работы с CancellationException.
runCatching из stdlib по умолчанию обрабатывает все возможные исключения, которые попадают в блок. Но это нарушает принципы structured concurrency: отмена корутин работает засчёт выбрасывания CancellationException: он должен игнорироваться обработчиками исключений, чтобы можно было корректно совершать отмену.
В дискуссии под issue довольно много размышлений о целесообразности введения такой функции в библиотеку, а пока многие люди реализуют её в своих проектах сами
Ещё несколько лет назад появился issue к репозиторию kotlinx.coroutines с предложением о создании функции, которая должна работать также, как runCatching, но при этом введя дополнительную логику работы с CancellationException.
runCatching из stdlib по умолчанию обрабатывает все возможные исключения, которые попадают в блок. Но это нарушает принципы structured concurrency: отмена корутин работает засчёт выбрасывания CancellationException: он должен игнорироваться обработчиками исключений, чтобы можно было корректно совершать отмену.
В дискуссии под issue довольно много размышлений о целесообразности введения такой функции в библиотеку, а пока многие люди реализуют её в своих проектах сами
3 8👍4 1
Не могу сказать, что много использую эту фичу, мой основной кейс для typealias – заполнение джнериков:
typelias SimpleRequest = Request<Unit>
Но теперь это может измениться. Начиная с Kotlin 2.2 отменяется требование для typealias быть на верхнем уровне в файле. Они теперь могут быть вложены в классы и интрфейсы, как и любые другие типы.
P.s. если вы очень хотите получить доступ к этой фиче, но не хотите поднимать Kotlin до версии 2.2, то вот немного чёрной магии для вас: https://pl.kotl.in/14tOuWRTx. Не является Kotlin-рекомендацией.
Please open Telegram to view this post
VIEW IN TELEGRAM
java.io.File Deprecated
Многие из вас скорее всего используют этот класс и даже не подозревают о том, что в нём есть множество проблем. Кстати, а кто сказал-то, что он Deprecated? У меня в IDE всё норм, не видно проблем! Ну вот в этом то и дело, что найти информацию об этом возможно только если очень постараться и знать, где искать.
Переходы: 1 • 2 • 3
Многие из вас скорее всего используют этот класс и даже не подозревают о том, что в нём есть множество проблем. Кстати, а кто сказал-то, что он Deprecated? У меня в IDE всё норм, не видно проблем! Ну вот в этом то и дело, что найти информацию об этом возможно только если очень постараться и знать, где искать.
Переходы: 1 • 2 • 3
👍7❤1 1
Что же говорит Oracle в своей заметке о том, что java.io.File – это легаси:
- Многие методы java.io.File не кидают ошибки, когда операция провалилась, что делает невозможным получить понятное сообщение об ошибке. Например, невозможно отличить File.delete() вернул false из-за того, что файла не было, или из-за того, что у пользователя недостаточно прав.
- File.rename работает по-разному на разных плафтормах.
- Нет нормальной поддержки для симлинков.
- Проблемы с метадатой: нельзя подробно посмотреть права файла, кто владелец файла и прочие атрибуты безопасности. Та метадата, что всё-таки поддерживалась, работает крайне не эффективно и медленно.
- Методы java.io.File не масштабируются. Большие папки приводят к тому, что методы java.io.File просто зависают, что может приводить к потенциальным Denial of Service атакам.
- С помощью этого класса не написать надёжный код, который рекурсивно пройдёт по дереву файлов и обработает циклические симлинки.
Переходы: 1 • 2 • 3
- Многие методы java.io.File не кидают ошибки, когда операция провалилась, что делает невозможным получить понятное сообщение об ошибке. Например, невозможно отличить File.delete() вернул false из-за того, что файла не было, или из-за того, что у пользователя недостаточно прав.
- File.rename работает по-разному на разных плафтормах.
- Нет нормальной поддержки для симлинков.
- Проблемы с метадатой: нельзя подробно посмотреть права файла, кто владелец файла и прочие атрибуты безопасности. Та метадата, что всё-таки поддерживалась, работает крайне не эффективно и медленно.
- Методы java.io.File не масштабируются. Большие папки приводят к тому, что методы java.io.File просто зависают, что может приводить к потенциальным Denial of Service атакам.
- С помощью этого класса не написать надёжный код, который рекурсивно пройдёт по дереву файлов и обработает циклические симлинки.
Переходы: 1 • 2 • 3
5🔥7 5👍3😨2
Поэтому Oracle и рекомендует больше не использовать java.io.File. Вместо этого (ещё аж в Java 8) были добавлены новые классы, которые решают эти проблемы. Были, наконец, разделены "данные" и "действия". Теперь "данные" выражаются в виде неизменяемого (а значит и потокобезопасного) объекта java.nio.file.Path. А действия с файлами реализованы в классе java.nio.file.Files, который реализует логику из java.io.File, но правильно.
Будет ли вам плохо прямо сейчас, если вы продолжите использовать java.io.File? Нет. Как и любая архитектурная ошибка (которой является java.io.File), этот класс может долго лежать миной в вашем проекте и никому не мешать. Но стоит ли новые проекты начинать и продолжать со старта заражать код легаси? Для меня ответ, скорее, нет.
Oracle Legacy File I/O
Переходы: 1 • 2 • 3
Будет ли вам плохо прямо сейчас, если вы продолжите использовать java.io.File? Нет. Как и любая архитектурная ошибка (которой является java.io.File), этот класс может долго лежать миной в вашем проекте и никому не мешать. Но стоит ли новые проекты начинать и продолжать со старта заражать код легаси? Для меня ответ, скорее, нет.
Oracle Legacy File I/O
Переходы: 1 • 2 • 3
51👍5🔥1