Pe această pagină

Introducere
Salut tuturor! 👋
Anul 2023 s-a apropiat de sfârșit și vreau să scriu un articol scurt despre experiența mea cu Kotlin și despre celelalte limbaje de programare pe care le-am încercat anul acesta.
În afara serviciului, îmi place să experimentez cu limbaje și tehnologii noi. De obicei nu construiesc proiecte personale în limbajele și framework-urile pe care le folosesc full time la muncă, pentru că nu le găsesc distractive. Îmi place să învăț lucruri noi.
Așa că am început să experimentez cu Dart, Rust, Swift și Kotlin, și am ajuns la concluzia că alegerea mea preferată este Kotlin.
Părerea mea…
Dart este un limbaj frumos și are unelte excelente, dar nu îl văd folosit nicăieri în afara Flutter. Așa că nu am prea multe cazuri de utilizare pentru el.
Rust este un limbaj excelent cu unelte excelente. Dar nu îmi place să mă lupt cu borrow checker-ul și cu macro-urile. 💀 Nu mă văd ca un programator de sisteme, așa că nu am prea multe cazuri de utilizare pentru Rust.
Swift este un limbaj excelent, iar uneltele pe care le-am folosit nu sunt grozave; nu îmi place deloc XCode.
De asemenea, nu am un calculator Apple pe care să îl folosesc personal tot timpul. Mi se pare că Apple a neglijat și limbajul. Deși este open-source și a apărut în 2015, când eram student în anul întâi la facultate, nu îl văd folosit nicăieri în afara ecosistemului Apple. Ceea ce este păcat, pentru că este un limbaj cu adevărat interesant.
Kotlin, limbajul viitorului
Până acum am folosit Kotlin pentru a scrie o mică aplicație Android numită Image Tagger, care este momentan în review la Google, și pentru a rezolva puzzle-urile din Advent of Code 2023.
Ce îmi place la Kotlin este că este un limbaj modern construit pe JVM, este ușor de învățat și este distractiv să scrii cod în el ✨.
Din păcate, limbajul nu este încă la fel de popular. Sper că în viitor tot mai mulți oameni vor începe să îl folosească.
Permite să vizezi mai multe platforme, cum ar fi Android, iOS, Web, Desktop și chiar dispozitive embedded. Imaginează-ți
să ai expresivitatea Kotlin pe un Raspberry Pi. 🤯 sau să construiești cat 🐈 în Kotlin folosind funcționalități de programare
funcțională și să îl rulezi ca aplicație nativă pe mașina ta Linux. 🐧
Advent of Code 2023 - Ziua 6
Ca să îți arăt cod Kotlin, îți voi împărtăși soluția mea pentru puzzle-ul Advent of Code 2023 Ziua 6. Puzzle-ul este despre o cursă cu bărci, se dă un input, iar tu trebuie să citești inputul, să îl parsezi și apoi să scrii soluția pentru puzzle.
Inputul arată așa:
Time: 7 15 30Distance: 9 40 200Ca să citesc inputul am creat o data class Race care reprezintă o cursă cu bărci, apoi l-am parsat folosind
funcționalitățile de programare funcțională ale Kotlin și lambda-uri.
data class Race(val raceTime: Long, val distance: Long)class WaitForIt : Puzzle("2023", "6") { private fun getRaceTimesPart1(): List<Race> = inputData.map { // Împarte pe spații, ignoră primul element, transformă token-urile în numere întregi it.split(Regex("\\s")).drop(1).map { it.trim().toLongOrNull() }.filterNotNull() }.zipWithNext().map { // Ia liniile combinate (deoarece avem doar 2) și transformă-le în curse. it.first.mapIndexed { index, i -> Race(i, it.second[index]) } }.flatten().also { println("The input is $it") } /// ...}Acum că am un List<Race> pot executa logica mea pentru rezolvarea primei părți a puzzle-ului:
Generez toate combinațiile posibile de cursă, apoi numar în câte moduri a fost bătut recordul.
/// ...
override fun partOne() {
getRaceTimesPart1().map {
// aici transformăm o cursă într-o listă cu toate combinațiile posibile
(1..<it.raceTime).count { time -> (it.raceTime - time) * time > it.distance }
}.reduce { acc, i -> acc * i }.also {
println("The number of ways the record was beaten $it.")
}
}
/// ...
A doua parte a puzzle-ului este similară cu prima, dar inputul este diferit.
Concluzie
Kotlin este un limbaj excelent, iar eu aștept cu nerăbdare să îl folosesc mai mult în 2024. Sper că voi folosi Ktor ca să scriu o parte din codul de backend pentru alte aplicații pe care le voi construi.
Sper că ți-a plăcut acest articol! 📖