Всем привет в 2023 году!
Уже писал про плюсы Kotlin, забыл про еще один - язык подталкивает к правильному написанию кода по умолчанию. Что имеется в виду:
1) все типы по умолчанию not null, для nullable типа нужно добавить ? к названию типа. String и String? Что дает: уменьшает число переменных с null в программе, следовательно, уменьшает число NPE
2) все коллекции по умолчанию immutable, чтобы создать изменяемую коллекцию надо использовать метод с mutable в названии: listOf(1,2) и mutableListOf(1,2). Что дает: упрощает оптимизацию байт-кода компилятором или JVM.
3) все классы и методы по умолчанию final, чтобы сделать открытый для расширения метод или класс - нужно указать ключевое слово open. Это приводит к тому, что открытыми будут только те классы и методы, которым это точно нужно)
Сюда же я бы добавил паттерны, реализованные в языке Kotlin. По сути это и синтаксический сахар, и эталонные реализации по умолчанию, уменьшающие вероятность ошибок при самостоятельной реализации:
4) синглтон - объявление класса-синглтона с помощью ключевого слова object
5) делегат - делегирование функционала класса или отдельного property через ключевое слово by
Почему важно по умолчанию показывать, как писать код правильно?
Приведу два примера:
1) Когда давным давном в далекой галктике Borland была среды быстрой разработки (RAD) Delphi. Хорошая была IDE, сделала одну большую ошибку - сильно завязалась на Windows и проиграла конкуренцию Visual Studio при массовом переходе на .NET.
Но был еще один серьезный недостаток. При создании нового проекта по умолчанию создавалось 3 файла: файл проекта, файл формы с UI компонентами и файл для обработчиков событий на форме. БольшАя часть разработчиков в файле для обработчиков хранила и бизнес-логику - Model + Controller. Лично я первое время делал именно так((( А всего-то надо было сделать еще один файл, назвать его скажем Logic.pas.
2) Еще похожий случай более близкий к нам по времени. Есть такой язык PHP. Язык простой в обучении, без компиляции, с нестрогой типизацией, с мощными и простыми средствами для обработки HTTP запросов, генерации HTML и работой с БД. Такая простота приводит к тому, что опять же многие PHP разработчики не думают о разделении кода по классам. Получаются огромные php скрипты, где смешаны M, V и C.
#kotlin #languages #nullsafety
Уже писал про плюсы Kotlin, забыл про еще один - язык подталкивает к правильному написанию кода по умолчанию. Что имеется в виду:
1) все типы по умолчанию not null, для nullable типа нужно добавить ? к названию типа. String и String? Что дает: уменьшает число переменных с null в программе, следовательно, уменьшает число NPE
2) все коллекции по умолчанию immutable, чтобы создать изменяемую коллекцию надо использовать метод с mutable в названии: listOf(1,2) и mutableListOf(1,2). Что дает: упрощает оптимизацию байт-кода компилятором или JVM.
3) все классы и методы по умолчанию final, чтобы сделать открытый для расширения метод или класс - нужно указать ключевое слово open. Это приводит к тому, что открытыми будут только те классы и методы, которым это точно нужно)
Сюда же я бы добавил паттерны, реализованные в языке Kotlin. По сути это и синтаксический сахар, и эталонные реализации по умолчанию, уменьшающие вероятность ошибок при самостоятельной реализации:
4) синглтон - объявление класса-синглтона с помощью ключевого слова object
5) делегат - делегирование функционала класса или отдельного property через ключевое слово by
Почему важно по умолчанию показывать, как писать код правильно?
Приведу два примера:
1) Когда давным давном в далекой галктике Borland была среды быстрой разработки (RAD) Delphi. Хорошая была IDE, сделала одну большую ошибку - сильно завязалась на Windows и проиграла конкуренцию Visual Studio при массовом переходе на .NET.
Но был еще один серьезный недостаток. При создании нового проекта по умолчанию создавалось 3 файла: файл проекта, файл формы с UI компонентами и файл для обработчиков событий на форме. БольшАя часть разработчиков в файле для обработчиков хранила и бизнес-логику - Model + Controller. Лично я первое время делал именно так((( А всего-то надо было сделать еще один файл, назвать его скажем Logic.pas.
2) Еще похожий случай более близкий к нам по времени. Есть такой язык PHP. Язык простой в обучении, без компиляции, с нестрогой типизацией, с мощными и простыми средствами для обработки HTTP запросов, генерации HTML и работой с БД. Такая простота приводит к тому, что опять же многие PHP разработчики не думают о разделении кода по классам. Получаются огромные php скрипты, где смешаны M, V и C.
#kotlin #languages #nullsafety
Всем привет!
Интересно сравнить рейтинг языков программирования по поисковым запросам https://www.tiobe.com/tiobe-index/ и по коду на github https://innovationgraph.github.com/global-metrics/programming-languages
Что бросилось в глаза:
1) большего всего кода на JavaScript, хотя ищут информацию по нему существенно меньше. Аналогично по TypeScript, причем в поиске он явно в тени JavaScript. Что ж, это стандарт в вебе, никуда с подводной лодки не денешься)
2) Java, Kotlin - позиции примерно совпадают в обоих списках. Стабильность) Perl и PHP к слову тоже. Но если позиция Java меня радует, Kotlin - кажется должно быть выше, Perl - ну ок, позиция в районе 25 места, то к PHP и его стабильному месту в десятке вопросики... Хотя надо сказать, что именно в PHP я видел самые строгие требования к документации. Правда похоже никто из разработчиков их не читает)
3) позиции Go и Rust по поиску сильно выше, чем по коду. Разница в 10 позиций. Налицо рост популярности
4) но еще сильнее разрыв между поиском и кодов для Fortran и Cobol. Cobol так вообще по коду в топ 50 не входит, а ищут его неплохо, как Kotlin. Подозреваю, причина в том, что код лежит во внутренних репозиториях "кровавого enterprise") И пришла пора его интегрировать с AI)
5) у Ruby кода существенно больше, чем популярности в поиске, тоже разница порядка 10 позиций. Так что хоронить Ruby еще рано, но то, что он уже не модный - факт)
6) наблюдается взлет популярности в поиске С#
7) позиции C и C++ по коду поменьше, чем в поиске. Я бы предположил, что тут как в анекдоте: удар молотком - 1 рубль, знал куда ударить - 1000 рублей)
8) Swift давно обогнал Objective-C в поиске, но еще не обогнал по коду. Это основные языки для разработки iOS\MacOS если что
9) код на Delphi где-то спрятан... Не думаю, что Enterprise, скорее на компьютерах университетов и школ
10) довольно много кода в репо для Shell, Makefile, Dockerfile, CMake, Powershell что в целом объяснимо. Groovy тоже можно в эту категорию отнести - сборка и deploy.
#languages
Интересно сравнить рейтинг языков программирования по поисковым запросам https://www.tiobe.com/tiobe-index/ и по коду на github https://innovationgraph.github.com/global-metrics/programming-languages
Что бросилось в глаза:
1) большего всего кода на JavaScript, хотя ищут информацию по нему существенно меньше. Аналогично по TypeScript, причем в поиске он явно в тени JavaScript. Что ж, это стандарт в вебе, никуда с подводной лодки не денешься)
2) Java, Kotlin - позиции примерно совпадают в обоих списках. Стабильность) Perl и PHP к слову тоже. Но если позиция Java меня радует, Kotlin - кажется должно быть выше, Perl - ну ок, позиция в районе 25 места, то к PHP и его стабильному месту в десятке вопросики... Хотя надо сказать, что именно в PHP я видел самые строгие требования к документации. Правда похоже никто из разработчиков их не читает)
3) позиции Go и Rust по поиску сильно выше, чем по коду. Разница в 10 позиций. Налицо рост популярности
4) но еще сильнее разрыв между поиском и кодов для Fortran и Cobol. Cobol так вообще по коду в топ 50 не входит, а ищут его неплохо, как Kotlin. Подозреваю, причина в том, что код лежит во внутренних репозиториях "кровавого enterprise") И пришла пора его интегрировать с AI)
5) у Ruby кода существенно больше, чем популярности в поиске, тоже разница порядка 10 позиций. Так что хоронить Ruby еще рано, но то, что он уже не модный - факт)
6) наблюдается взлет популярности в поиске С#
7) позиции C и C++ по коду поменьше, чем в поиске. Я бы предположил, что тут как в анекдоте: удар молотком - 1 рубль, знал куда ударить - 1000 рублей)
8) Swift давно обогнал Objective-C в поиске, но еще не обогнал по коду. Это основные языки для разработки iOS\MacOS если что
9) код на Delphi где-то спрятан... Не думаю, что Enterprise, скорее на компьютерах университетов и школ
10) довольно много кода в репо для Shell, Makefile, Dockerfile, CMake, Powershell что в целом объяснимо. Groovy тоже можно в эту категорию отнести - сборка и deploy.
#languages
Github
GitHub Innovation Graph
Explore a universe of data about how the world is building software together on GitHub.