SlideShare a Scribd company logo
1 of 76
Download to read offline
The Kotlin
Programming Language


             Svetlana Isakova
What? Who? Why?
   A modern language
       Statically typed
       Object-oriented
       General-purpose

   Compiler
       JVM byte code
       JavaScript (not GWT)
                               2
What? Who? Why?
   A modern language
       Statically typed
       Object-oriented
       General-purpose

   Developed by JetBrains
       Open source
       Intended for industrial use
                                      3
Dynamic vs static typing

   Dynamically typed languages
       Easier to learn
       Easier to write small programs

   Statically typed languages
       Programs run much faster
       More powerful IDE
       Easier to support huge projects

                                          4
Scala as a candidate

   Goal
       statically typed
       JVM-targeted
       concise language

   Scala
       too complicated
       too implicit
       too difficult to create a good IDE
                                             5
Era of new industrial languages

   Ceylon   Red Hat / Jboss    (April 2011)
   Scala    Typesafe           (May 2011)
   Kotlin   JetBrains          (July 2011)
   xTend    Eclipse / itemis   (November 2011)




                                                  6
Kotlin “Hello, world”
 fun main(args : Array<String>) {
     Greeter().greet()
 }


 class Greeter(name : String = "world") {
     val greeting = "Hello, $name!"
     fun greet() {
         println(greeting)
     }
 }                                          7
Problems and Solutions

   Extending Existing APIs
   Handling Absent Values
   Case Analysis
   Multiple Implementation Inheritance
   Collection transformation
   Variance of Generic Types
   Builders

                                          8
Extending Existing APIs



                          9
Regular expression example
   Java
    Pattern p = Pattern.compile("d*");
    Matcher m = p.matcher("123");
    if (m.find())
        String result = m.group();


   Scala
    val r = "d*".r
    val result = r.findFirstIn("123")
                                        10
Scala: implicit conversions
val r = "d*".r
 

trait StringOps { 
  ...
  def r: Regex = new Regex(toString)
}
 

implicit def augmentString(x: String)
                    = new StringOps(x)
                                       11
Scala: implicit conversions
val r = augmentString("d*").r
 

trait StringOps { 
  ...
  def r: Regex = new Regex(toString)
}
 

implicit def augmentString(x: String)
                    = new StringOps(x)
                                       12
Scala: implicit conversions

    val r = "d*".r


   Conversion to 'StringOps' class:
       implicit
       requires a wrapper for each invocation




                                                 13
Functionality extension

   Java
    Collections.sort(list, comparator)


   Scala / Kotlin
    list.sort(comparator)


       'sort' is not declared in java.util.List
       'sort' can be autocompleted
                                                   14
Kotlin: extension functions

   list.sort(comparator)



   fun <T> List<T>.sort(c: Comparator<T>) {
        ...
    }



                                         15
Iterator for String

for (c in “abc”) {
    println(c)
}




 
                      16
Iterator for String

for (c in “abc”) {
    println(c)
}


class StringIterator(val s: String) :
                         Iterator<Char> {
    private var i = 0
    override fun next() = s[i++]
    override fun hasNext() = i < s.size
}
                                       17
Iterator for String

for (c in “abc”) {
    println(c)
}


fun String.iterator() =
                  StringIterator(this)



 
                                    18
Extension functions

   fun <T> List<T>.sort(c:
                   Comparator<T>) {...}
   fun String.iterator() =
                   StringIterator(this)

       non-virtual
       compile to a static function

                                       19
Extending APIs

   Scala
       implicit
       overhead on wrappers

   Kotlin
       functionality cannot be inherited




                                            20
Handling Absent Values



                         21
Java NPE problem

   if (order.getCustomer().       //NPE
          getInfo().getAge() >
              limits.getMinLegalAge()) {
     ... 
    }




                                      22
Java: @Nullable, @NotNull

   @NotNull Customer getCustomer() {
       ...
       return null; //warning, assertion
    }


   @Nullable Customer getCustomer() {...}


    getCustomer().getInfo() //warning, NPE
                                        23
Scala: Option type
   def getCustomer() : Option[Customer] 
    {…}
     

   order.getCustomer match {
       case Some(customer) =>
                    Some(customer.getInfo)
       case None => None
    }
     

                                         24
Scala: Option type
   def getCustomer() : Option[Customer] 
    {…}
     

   order.getCustomer match {
       case Some(customer) =>
                    Some(customer.getInfo)
       case None => None
    }
     

   order.getCustomer.map(_.getInfo)     25
Scala: Option type

   def getCustomer() : Option[Customer] {
      ...
      return null //no error
    }




                                        26
Scala: Option type

   def getCustomer() : Option[Customer] 
   order.getCustomer.map(_.getInfo).
                             map(_.getAge)
     

       extra objects, classes are created:
               Some(customer), Some(info), Some(age)
               classes for function literals
               objects for function literals
         


       inconvenient for debugging                 27
Kotlin: nullable types
   fun getCustomer() : Customer? { 
        ...
        return null
    }


   fun getCustomer() : Customer {
        ...
        return null //error
    }                                  28
Kotlin: nullable types
   fun getCustomer() : Customer? 


   getCustomer().getInfo()   error
     




   getCustomer()?.getInfo()   ok
     




     




                                      29
Kotlin: nullable types
   fun getCustomer() : Customer? 


   getCustomer().getInfo()   error
     




   getCustomer()?.getInfo()   // Info?
     







                                          30
Kotlin: nullable types
   fun getCustomer() : Customer? 



     




   getCustomer()?.getInfo()   // Info?
     







   val customer = getCustomer()
    if (customer != null) 
     




      customer.getInfo()       // Info
                                          31
Call chains

   Java
    order.getCustomer().getInfo().getAge()
     

   Scala
    order.getCustomer.map(_.getInfo).
                             map(_.getAge)
   Kotlin
    order.getCustomer()?.getInfo()?.getAge()
                                         32
“If not null” check
   Scala
    opt foreach { value =>
       operate(value)
    }


   Kotlin
    if (value != null) {
       operate(value)
    }                        33
Java Interop

   Scala
    val files = new File("test").listFiles()
    println(files.length) //NPE


   Kotlin
    val files = File("test").listFiles()
    println(files.length) //doesn't compile
    println(files?.size ?: "no files")
    println(files!!.size) //NPE
                                              34
Kotlin & Java interop

   @NotNull, @Nullable annotations

   “alternative headers”
    package java.util
    public trait List<E> :                   
                   java.util.Collection<E> {
      ...
      fun listIterator() :                   
           java.util.ListIterator<E>
    }                                      35
Handling absent values

   Scala
       overhead



   Kotlin
       inconvenient Java interop without alternative
        headers or annotations



                                                        36
Case Analysis



                37
Scala: pattern matching

 
 sealed trait Expr
 
 case class Num(value: Int) extends Expr
 case class Sum(left: Expr, right: Expr)       
                                 extends Expr


 
    def eval(e: Expr) : Int = 
 
      e match {
●

 

 
         case Num(v) => v
         case Sum(l, r) => eval(l) + eval(r)
      }
            




                                               38
Kotlin: smart casts
 
     trait Expr
 
     class Number(val value: Int) : Expr
     class Sum(val left: Expr, val right: Expr):
                                              Expr
 
     fun eval(e: Expr) : Int {
  
       if (e is Number) 
         return e.value     //smart cast
     
  if (e is Sum) 
 




    return eval(e.left) + eval(e.right)
 
 




       throw IllegalArgumentException(
                          “Unknown expression $e”)
     }                                         39
Kotlin: smart casts

 
     trait Expr
 
     class Num(val value: Int) : Expr
     class Sum(val left: Expr, val right: Expr):
                                              Expr
 
     fun eval(e: Expr) : Int =
  
       when (e) {
 
         is Num ­> e.value 
 
         is Sum ­> eval(e.left) + eval(e.right)
         else ­> throw IllegalArgumentException(
                          “Unknown expression $e”)
       }
                                               40
Multiple
Implementation
Inheritance

                 41
Scala traits

trait A {
  val a = print("A")
}

trait B {
  val b = print("B")
}

class C extends B with A {}

new C() 
                              42
Scala traits

trait A {
  val a = print("A")
}

trait B {
  val b = print("B")
}

class C extends B with A {}

new C() // prints BA
                              43
Scala traits

trait A {
  val a = print("A")
}

trait B extends A {
  val b = print("B")
}

class C extends B with A {}

new C() 
                              44
Scala traits

trait A {
  val a = print("A")
}

trait B extends A {
  val b = print("B")
}

class C extends B with A {}

new C() // prints AB
                              45
Scala traits

trait A {
  def foo()
}

trait B extends A {
  override def foo() = "B"
}

class C extends B {}

new C().foo()  //"B"

                             46
Scala traits
trait A {
  def foo()
}

trait B extends A {
  override def foo() = "B"
}

trait D extends A {
  override def foo() = "D"
}

class C extends B with D {}

new C().foo()  //"D"          47
Kotlin traits

   are more like Java interfaces
   methods can have bodies

   no state
   no linearization




                                    48
Kotlin traits
trait A {
    fun foo() = println("A")
}
 

trait B {
    fun foo() = println("B")
}
 


class C : B, A {} //doesn't compile
    
    
    
    
                                      49
Kotlin traits
trait A {
    fun foo() = println("A")
}
 

trait B {
    fun foo() = println("B")
}
 

class C : B, A {
    override fun foo() {
        super<B>.foo()
        super<A>.foo()
    }
}                              50
Collection
transformation


                 51
Scala collections

   Set(1, 2, 3).map(_ * 0) →  Set(0)


   "abc".map(_.toUpper)   →    "ABC"




                                        52
Scala collections

   Set(1, 2, 3).map(_ * 0) →  Set(0)


   "abc".map(_.toUpper)   →    "ABC"

   trait TraversableLike[+A, +Repr] {
    def map[B, That](f: A => B)(implicit bf: 
          CanBuildFrom[Repr, B, That]): That 
    }

                                           53
Kotlin approach


   'map', 'filter' always return immutable list




                                               54
Kotlin approach


   'map', 'filter' always return immutable list


   hashSet(1, 2, 3).map                
         {(i: Int) ­> i * 0}            
                      → List(0, 0, 0)



                                               55
Kotlin approach


   "abc".map {(c: Char) ­>             
                c.toUpper}   →     "ABC"



   fun String.map(                     
           f : (Char) ­> Char) : String


                                      56
Lazy computations

   Iterators are lazy
   set.iterator().map { … }.filter { … }




                                       57
Lazy computations

   Iterators are lazy
   set.iterator().map { … }.filter { … }


   Iterables are not lazy
   val lazySet = set.lazyMap { … }
    lazySet().filter { … }
    lazySet().filter { … }

                                       58
Variance
of Generic Types


                   59
Scala. Declaration site variance
   class List[+T] { 
      //only produces T
      def head() : T 
      def tail() : List[T]
    }
   class Comparable[­T] { 
      //only consumes T
      def compare(t1 : T, t2: T)
    }                              60
Kotlin. Declaration site variance
   class List<out T> { 
      //only produces T
      fun head() : T 
      fun tail() : List[T]
    }
   class Comparable<in T> { 
      //only consumes T
      fun compare(t1 : T, t2: T)
    }                               61
Use-site variance

fun <T> copy(from: Set<T>,           
                     to: Set<T>) {


  ...
}


copy(numbers, objects)

                                    62
Kotlin. Use-site variance

fun <T> copy(from: List<out T>,      
                      to: List<T>) {


  ...
}


copy(numbers, objects)

                                    63
Kotlin. Use-site variance

fun <T> copy(from: List<out T>,      
                      to: List<T>) {
  from.add(t) //error
  ...
}


copy(numbers, objects) 

                                    64
Scala. Use-site variance


def copy[T](from: Set[_ <: T],       
                       to: Set[T]) {
  ...
}


copy(numbers, objects)

                                    65
Scala. Existential types


def copy[T](from:
     Set[X] forSome { type X <: T }, 
                     to: Set[T]) {
  ...
}


copy(numbers, objects)
                                    66
Builders



           67
Builders in Groovy

html {
   head {
      title "XML encoding with Groovy"
   }

   body {
      h1 "XML encoding with Groovy"
      p "this format can be used as an
                alternative markup to XML"
      /* an element with attributes and text content */
      ahref:'http://groovy.codehaus.org'["Groovy"]
   }
}

                                                      68
Builders in Kotlin

html {
   head {
      title { + "XML encoding with Kotlin" }
   }

   body {
      h1 { + "XML encoding with Kotlin" }
      p { + "this format this format is now type­safe" }

      /* an element with attributes and text content */
      a(href = "http://kotlin.jetbrains.org")["Kotlin"]
   }
}

                                                      69
Builders: Implementation
   Function definition
    fun html(init : HTML.() ­> Unit) : HTML {
        val html = HTML()
        html.init()
        return html
    }
   Usage
    html {
        this.head { ... }
    }                                       70
Builders: Implementation
   Function definition
    fun html(init : HTML.() ­> Unit) : HTML {
        val html = HTML()
        html.init()
        return html
    }
   Usage
    html {
        head { ... }
    }                                       71
Builders: Implementation
class Tag(val name : String) : Element {
   val children = ArrayList<Element>()
   val attributes = HashMap<String, String>()
}
 
class TagWithText(name : String) : Tag(name) {
   fun String.plus() {
       children.add(TextElement(this))
   }
}
 
class HTML() : Tag("html") {
   fun head(init : Head.() ­> Unit) { }
   fun body(init : Body.() ­> Unit) { }
                                             72
}
Builders in Kotlin

html {
   head {
      title { + "XML encoding with Kotlin" }
   }

   body {
      h1 { + "XML encoding with Kotlin" }
      p { + "this format this format is now type­safe" }

      /* an element with attributes and text content */
      a(href = "http://kotlin.jetbrains.org")["Kotlin"]
   }
}

                                                      73
Resources
   Home page
      http://kotlin.jetbrains.org

   Web Demo
      http://kotlin­demo.jetbrains.com

   Blog
      http://blog.jetbrains.com/kotlin

   Forum
      Kotlin at http://devnet.jetbrains.com   74
Interesting links

   Marius Eriksen “Effective Scala”
      http://twitter.github.com/effectivescala/


   Yang Zhang “True Scala complexity”
      http://yz.mit.edu/wp/true­scala­complexity/



   Joshua Suereth D. “Scala in Depth”
      http://www.amazon.com/Scala­Depth­Joshua­Suereth­
      D/dp/1935182706

                                                          75
Thank you!

More Related Content

What's hot

Programming in Scala: Notes
Programming in Scala: NotesProgramming in Scala: Notes
Programming in Scala: NotesRoberto Casadei
 
Develop your next app with kotlin @ AndroidMakersFr 2017
Develop your next app with kotlin @ AndroidMakersFr 2017Develop your next app with kotlin @ AndroidMakersFr 2017
Develop your next app with kotlin @ AndroidMakersFr 2017Arnaud Giuliani
 
Kotlin cheat sheet by ekito
Kotlin cheat sheet by ekitoKotlin cheat sheet by ekito
Kotlin cheat sheet by ekitoArnaud Giuliani
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersBartosz Kosarzycki
 
Intro to Functional Programming in Scala
Intro to Functional Programming in ScalaIntro to Functional Programming in Scala
Intro to Functional Programming in ScalaShai Yallin
 
Ankara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with ScalaAnkara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with ScalaEnsar Basri Kahveci
 
Taking Kotlin to production, Seriously
Taking Kotlin to production, SeriouslyTaking Kotlin to production, Seriously
Taking Kotlin to production, SeriouslyHaim Yadid
 
Swift and Kotlin Presentation
Swift and Kotlin PresentationSwift and Kotlin Presentation
Swift and Kotlin PresentationAndrzej Sitek
 
A Sceptical Guide to Functional Programming
A Sceptical Guide to Functional ProgrammingA Sceptical Guide to Functional Programming
A Sceptical Guide to Functional ProgrammingGarth Gilmour
 
Scala introduction
Scala introductionScala introduction
Scala introductionvito jeng
 
Introduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoIntroduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoMuhammad Abdullah
 

What's hot (19)

Programming in Scala: Notes
Programming in Scala: NotesProgramming in Scala: Notes
Programming in Scala: Notes
 
Develop your next app with kotlin @ AndroidMakersFr 2017
Develop your next app with kotlin @ AndroidMakersFr 2017Develop your next app with kotlin @ AndroidMakersFr 2017
Develop your next app with kotlin @ AndroidMakersFr 2017
 
Kotlin cheat sheet by ekito
Kotlin cheat sheet by ekitoKotlin cheat sheet by ekito
Kotlin cheat sheet by ekito
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developers
 
Intro to Functional Programming in Scala
Intro to Functional Programming in ScalaIntro to Functional Programming in Scala
Intro to Functional Programming in Scala
 
Ankara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with ScalaAnkara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with Scala
 
Joy of scala
Joy of scalaJoy of scala
Joy of scala
 
Scala fundamentals
Scala fundamentalsScala fundamentals
Scala fundamentals
 
Taking Kotlin to production, Seriously
Taking Kotlin to production, SeriouslyTaking Kotlin to production, Seriously
Taking Kotlin to production, Seriously
 
Scala - brief intro
Scala - brief introScala - brief intro
Scala - brief intro
 
Workshop Scala
Workshop ScalaWorkshop Scala
Workshop Scala
 
Scala coated JVM
Scala coated JVMScala coated JVM
Scala coated JVM
 
Swift and Kotlin Presentation
Swift and Kotlin PresentationSwift and Kotlin Presentation
Swift and Kotlin Presentation
 
Introduction to kotlin
Introduction to kotlinIntroduction to kotlin
Introduction to kotlin
 
Introduction to kotlin
Introduction to kotlinIntroduction to kotlin
Introduction to kotlin
 
Scala
ScalaScala
Scala
 
A Sceptical Guide to Functional Programming
A Sceptical Guide to Functional ProgrammingA Sceptical Guide to Functional Programming
A Sceptical Guide to Functional Programming
 
Scala introduction
Scala introductionScala introduction
Scala introduction
 
Introduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoIntroduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demo
 

Viewers also liked

Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Scott Wlaschin
 
Kotlin Advanced - language reference for Android developers
Kotlin Advanced - language reference for Android developers Kotlin Advanced - language reference for Android developers
Kotlin Advanced - language reference for Android developers STX Next
 
No excuses, switch to kotlin
No excuses, switch to kotlinNo excuses, switch to kotlin
No excuses, switch to kotlinThijs Suijten
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisWill Iverson
 
How to Choose an API Automation Tool for a Distributed Cloud-based App: To...
How to Choose an API Automation Tool for a Distributed Cloud-based App: To...How to Choose an API Automation Tool for a Distributed Cloud-based App: To...
How to Choose an API Automation Tool for a Distributed Cloud-based App: To...Altoros
 
Secure RESTful API Automation With JavaScript
Secure RESTful API Automation With JavaScriptSecure RESTful API Automation With JavaScript
Secure RESTful API Automation With JavaScriptJonathan LeBlanc
 
OpenERP 6.1 Framework Changes
OpenERP 6.1 Framework ChangesOpenERP 6.1 Framework Changes
OpenERP 6.1 Framework ChangesOdoo
 
Design Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John HardyDesign Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John HardyManageIQ
 
Kotlin @ StrangeLoop 2011
Kotlin @ StrangeLoop 2011Kotlin @ StrangeLoop 2011
Kotlin @ StrangeLoop 2011Andrey Breslav
 
Kotlin @ CSClub & Yandex
Kotlin @ CSClub & YandexKotlin @ CSClub & Yandex
Kotlin @ CSClub & YandexAndrey Breslav
 
Kotlin Slides from Devoxx 2011
Kotlin Slides from Devoxx 2011Kotlin Slides from Devoxx 2011
Kotlin Slides from Devoxx 2011Andrey Breslav
 
Flexible Types in Kotlin - JVMLS 2015
Flexible Types in Kotlin - JVMLS 2015Flexible Types in Kotlin - JVMLS 2015
Flexible Types in Kotlin - JVMLS 2015Andrey Breslav
 
Crash Introduction to Modern Java Data Access: Understanding JPA, Hibernate, ...
Crash Introduction to Modern Java Data Access: Understanding JPA, Hibernate, ...Crash Introduction to Modern Java Data Access: Understanding JPA, Hibernate, ...
Crash Introduction to Modern Java Data Access: Understanding JPA, Hibernate, ...Vladimir Bacvanski, PhD
 
MyBatis 개요와 Java+MyBatis+MySQL 예제
MyBatis 개요와 Java+MyBatis+MySQL 예제MyBatis 개요와 Java+MyBatis+MySQL 예제
MyBatis 개요와 Java+MyBatis+MySQL 예제정완 전
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSunghyouk Bae
 
RESTful API Automation with JavaScript
RESTful API Automation with JavaScriptRESTful API Automation with JavaScript
RESTful API Automation with JavaScriptJonathan LeBlanc
 

Viewers also liked (20)

Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)
 
Kotlin Advanced - language reference for Android developers
Kotlin Advanced - language reference for Android developers Kotlin Advanced - language reference for Android developers
Kotlin Advanced - language reference for Android developers
 
No excuses, switch to kotlin
No excuses, switch to kotlinNo excuses, switch to kotlin
No excuses, switch to kotlin
 
Kotlin
KotlinKotlin
Kotlin
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatis
 
Fun with Kotlin
Fun with KotlinFun with Kotlin
Fun with Kotlin
 
How to Choose an API Automation Tool for a Distributed Cloud-based App: To...
How to Choose an API Automation Tool for a Distributed Cloud-based App: To...How to Choose an API Automation Tool for a Distributed Cloud-based App: To...
How to Choose an API Automation Tool for a Distributed Cloud-based App: To...
 
Secure RESTful API Automation With JavaScript
Secure RESTful API Automation With JavaScriptSecure RESTful API Automation With JavaScript
Secure RESTful API Automation With JavaScript
 
OpenERP 6.1 Framework Changes
OpenERP 6.1 Framework ChangesOpenERP 6.1 Framework Changes
OpenERP 6.1 Framework Changes
 
Design Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John HardyDesign Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John Hardy
 
Kotlin @ StrangeLoop 2011
Kotlin @ StrangeLoop 2011Kotlin @ StrangeLoop 2011
Kotlin @ StrangeLoop 2011
 
Eval4j @ JVMLS 2014
Eval4j @ JVMLS 2014Eval4j @ JVMLS 2014
Eval4j @ JVMLS 2014
 
Kotlin @ CSClub & Yandex
Kotlin @ CSClub & YandexKotlin @ CSClub & Yandex
Kotlin @ CSClub & Yandex
 
Kotlin Slides from Devoxx 2011
Kotlin Slides from Devoxx 2011Kotlin Slides from Devoxx 2011
Kotlin Slides from Devoxx 2011
 
Flexible Types in Kotlin - JVMLS 2015
Flexible Types in Kotlin - JVMLS 2015Flexible Types in Kotlin - JVMLS 2015
Flexible Types in Kotlin - JVMLS 2015
 
Kotlin @ Devoxx 2011
Kotlin @ Devoxx 2011Kotlin @ Devoxx 2011
Kotlin @ Devoxx 2011
 
Crash Introduction to Modern Java Data Access: Understanding JPA, Hibernate, ...
Crash Introduction to Modern Java Data Access: Understanding JPA, Hibernate, ...Crash Introduction to Modern Java Data Access: Understanding JPA, Hibernate, ...
Crash Introduction to Modern Java Data Access: Understanding JPA, Hibernate, ...
 
MyBatis 개요와 Java+MyBatis+MySQL 예제
MyBatis 개요와 Java+MyBatis+MySQL 예제MyBatis 개요와 Java+MyBatis+MySQL 예제
MyBatis 개요와 Java+MyBatis+MySQL 예제
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSL
 
RESTful API Automation with JavaScript
RESTful API Automation with JavaScriptRESTful API Automation with JavaScript
RESTful API Automation with JavaScript
 

Similar to Светлана Исакова «Язык Kotlin»

Introduction to scala
Introduction to scalaIntroduction to scala
Introduction to scalaMichel Perez
 
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...Andrew Phillips
 
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...Andrew Phillips
 
The Scala Programming Language
The Scala Programming LanguageThe Scala Programming Language
The Scala Programming Languageleague
 
Programmation fonctionnelle Scala
Programmation fonctionnelle ScalaProgrammation fonctionnelle Scala
Programmation fonctionnelle ScalaSlim Ouertani
 
2 kotlin vs. java: what java has that kotlin does not
2  kotlin vs. java: what java has that kotlin does not2  kotlin vs. java: what java has that kotlin does not
2 kotlin vs. java: what java has that kotlin does notSergey Bandysik
 
Scala for Java Programmers
Scala for Java ProgrammersScala for Java Programmers
Scala for Java ProgrammersEric Pederson
 
K is for Kotlin
K is for KotlinK is for Kotlin
K is for KotlinTechMagic
 
Scala at GenevaJUG by Iulian Dragos
Scala at GenevaJUG by Iulian DragosScala at GenevaJUG by Iulian Dragos
Scala at GenevaJUG by Iulian DragosGenevaJUG
 
1.2 scala basics
1.2 scala basics1.2 scala basics
1.2 scala basicswpgreenway
 
Type Driven Development @ Confitura 2014
Type Driven Development @ Confitura 2014Type Driven Development @ Confitura 2014
Type Driven Development @ Confitura 2014Maciek Próchniak
 

Similar to Светлана Исакова «Язык Kotlin» (20)

Introduction to scala
Introduction to scalaIntroduction to scala
Introduction to scala
 
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
 
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
 
The Scala Programming Language
The Scala Programming LanguageThe Scala Programming Language
The Scala Programming Language
 
Programmation fonctionnelle Scala
Programmation fonctionnelle ScalaProgrammation fonctionnelle Scala
Programmation fonctionnelle Scala
 
Scala for curious
Scala for curiousScala for curious
Scala for curious
 
2 kotlin vs. java: what java has that kotlin does not
2  kotlin vs. java: what java has that kotlin does not2  kotlin vs. java: what java has that kotlin does not
2 kotlin vs. java: what java has that kotlin does not
 
Scala for Java Programmers
Scala for Java ProgrammersScala for Java Programmers
Scala for Java Programmers
 
Coding in Style
Coding in StyleCoding in Style
Coding in Style
 
K is for Kotlin
K is for KotlinK is for Kotlin
K is for Kotlin
 
1.2 scala basics
1.2 scala basics1.2 scala basics
1.2 scala basics
 
Introduction to Kotlin
Introduction to KotlinIntroduction to Kotlin
Introduction to Kotlin
 
Scala to assembly
Scala to assemblyScala to assembly
Scala to assembly
 
Scala at GenevaJUG by Iulian Dragos
Scala at GenevaJUG by Iulian DragosScala at GenevaJUG by Iulian Dragos
Scala at GenevaJUG by Iulian Dragos
 
Scala in Places API
Scala in Places APIScala in Places API
Scala in Places API
 
1.2 scala basics
1.2 scala basics1.2 scala basics
1.2 scala basics
 
Functional Programming in Scala
Functional Programming in ScalaFunctional Programming in Scala
Functional Programming in Scala
 
Comparing JVM languages
Comparing JVM languagesComparing JVM languages
Comparing JVM languages
 
Type Driven Development @ Confitura 2014
Type Driven Development @ Confitura 2014Type Driven Development @ Confitura 2014
Type Driven Development @ Confitura 2014
 
Scala in a nutshell by venkat
Scala in a nutshell by venkatScala in a nutshell by venkat
Scala in a nutshell by venkat
 

More from e-Legion

MBLT16: Elena Rydkina, Pure
MBLT16: Elena Rydkina, PureMBLT16: Elena Rydkina, Pure
MBLT16: Elena Rydkina, Puree-Legion
 
MBLT16: Alexander Lukin, AppMetrica
MBLT16: Alexander Lukin, AppMetricaMBLT16: Alexander Lukin, AppMetrica
MBLT16: Alexander Lukin, AppMetricae-Legion
 
MBLT16: Vincent Wu, Alibaba Mobile
MBLT16: Vincent Wu, Alibaba MobileMBLT16: Vincent Wu, Alibaba Mobile
MBLT16: Vincent Wu, Alibaba Mobilee-Legion
 
MBLT16: Dmitriy Geranin, Afisha Restorany
MBLT16: Dmitriy Geranin, Afisha RestoranyMBLT16: Dmitriy Geranin, Afisha Restorany
MBLT16: Dmitriy Geranin, Afisha Restoranye-Legion
 
MBLT16: Marvin Liao, 500Startups
MBLT16: Marvin Liao, 500StartupsMBLT16: Marvin Liao, 500Startups
MBLT16: Marvin Liao, 500Startupse-Legion
 
MBLT16: Andrey Maslak, Aviasales
MBLT16: Andrey Maslak, AviasalesMBLT16: Andrey Maslak, Aviasales
MBLT16: Andrey Maslak, Aviasalese-Legion
 
MBLT16: Andrey Bakalenko, Sberbank Online
MBLT16: Andrey Bakalenko, Sberbank OnlineMBLT16: Andrey Bakalenko, Sberbank Online
MBLT16: Andrey Bakalenko, Sberbank Onlinee-Legion
 
Rx Java architecture
Rx Java architectureRx Java architecture
Rx Java architecturee-Legion
 
MBLTDev15: Hector Zarate, Spotify
MBLTDev15: Hector Zarate, SpotifyMBLTDev15: Hector Zarate, Spotify
MBLTDev15: Hector Zarate, Spotifye-Legion
 
MBLTDev15: Cesar Valiente, Wunderlist
MBLTDev15: Cesar Valiente, WunderlistMBLTDev15: Cesar Valiente, Wunderlist
MBLTDev15: Cesar Valiente, Wunderliste-Legion
 
MBLTDev15: Brigit Lyons, Soundcloud
MBLTDev15: Brigit Lyons, SoundcloudMBLTDev15: Brigit Lyons, Soundcloud
MBLTDev15: Brigit Lyons, Soundcloude-Legion
 
MBLTDev15: Egor Tolstoy, Rambler&Co
MBLTDev15: Egor Tolstoy, Rambler&CoMBLTDev15: Egor Tolstoy, Rambler&Co
MBLTDev15: Egor Tolstoy, Rambler&Coe-Legion
 
MBLTDev15: Alexander Orlov, Postforpost
MBLTDev15: Alexander Orlov, PostforpostMBLTDev15: Alexander Orlov, Postforpost
MBLTDev15: Alexander Orlov, Postforposte-Legion
 
MBLTDev15: Artemiy Sobolev, Parallels
MBLTDev15: Artemiy Sobolev, ParallelsMBLTDev15: Artemiy Sobolev, Parallels
MBLTDev15: Artemiy Sobolev, Parallelse-Legion
 
MBLTDev15: Alexander Dimchenko, DIT
MBLTDev15: Alexander Dimchenko, DITMBLTDev15: Alexander Dimchenko, DIT
MBLTDev15: Alexander Dimchenko, DITe-Legion
 
MBLTDev: Evgeny Lisovsky, Litres
MBLTDev: Evgeny Lisovsky, LitresMBLTDev: Evgeny Lisovsky, Litres
MBLTDev: Evgeny Lisovsky, Litrese-Legion
 
MBLTDev: Alexander Dimchenko, Bright Box
MBLTDev: Alexander Dimchenko, Bright Box MBLTDev: Alexander Dimchenko, Bright Box
MBLTDev: Alexander Dimchenko, Bright Box e-Legion
 
MBLTDev15: Konstantin Goldshtein, Microsoft
MBLTDev15: Konstantin Goldshtein, MicrosoftMBLTDev15: Konstantin Goldshtein, Microsoft
MBLTDev15: Konstantin Goldshtein, Microsofte-Legion
 
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank e-Legion
 

More from e-Legion (20)

MBLT16: Elena Rydkina, Pure
MBLT16: Elena Rydkina, PureMBLT16: Elena Rydkina, Pure
MBLT16: Elena Rydkina, Pure
 
MBLT16: Alexander Lukin, AppMetrica
MBLT16: Alexander Lukin, AppMetricaMBLT16: Alexander Lukin, AppMetrica
MBLT16: Alexander Lukin, AppMetrica
 
MBLT16: Vincent Wu, Alibaba Mobile
MBLT16: Vincent Wu, Alibaba MobileMBLT16: Vincent Wu, Alibaba Mobile
MBLT16: Vincent Wu, Alibaba Mobile
 
MBLT16: Dmitriy Geranin, Afisha Restorany
MBLT16: Dmitriy Geranin, Afisha RestoranyMBLT16: Dmitriy Geranin, Afisha Restorany
MBLT16: Dmitriy Geranin, Afisha Restorany
 
MBLT16: Marvin Liao, 500Startups
MBLT16: Marvin Liao, 500StartupsMBLT16: Marvin Liao, 500Startups
MBLT16: Marvin Liao, 500Startups
 
MBLT16: Andrey Maslak, Aviasales
MBLT16: Andrey Maslak, AviasalesMBLT16: Andrey Maslak, Aviasales
MBLT16: Andrey Maslak, Aviasales
 
MBLT16: Andrey Bakalenko, Sberbank Online
MBLT16: Andrey Bakalenko, Sberbank OnlineMBLT16: Andrey Bakalenko, Sberbank Online
MBLT16: Andrey Bakalenko, Sberbank Online
 
Rx Java architecture
Rx Java architectureRx Java architecture
Rx Java architecture
 
Rx java
Rx javaRx java
Rx java
 
MBLTDev15: Hector Zarate, Spotify
MBLTDev15: Hector Zarate, SpotifyMBLTDev15: Hector Zarate, Spotify
MBLTDev15: Hector Zarate, Spotify
 
MBLTDev15: Cesar Valiente, Wunderlist
MBLTDev15: Cesar Valiente, WunderlistMBLTDev15: Cesar Valiente, Wunderlist
MBLTDev15: Cesar Valiente, Wunderlist
 
MBLTDev15: Brigit Lyons, Soundcloud
MBLTDev15: Brigit Lyons, SoundcloudMBLTDev15: Brigit Lyons, Soundcloud
MBLTDev15: Brigit Lyons, Soundcloud
 
MBLTDev15: Egor Tolstoy, Rambler&Co
MBLTDev15: Egor Tolstoy, Rambler&CoMBLTDev15: Egor Tolstoy, Rambler&Co
MBLTDev15: Egor Tolstoy, Rambler&Co
 
MBLTDev15: Alexander Orlov, Postforpost
MBLTDev15: Alexander Orlov, PostforpostMBLTDev15: Alexander Orlov, Postforpost
MBLTDev15: Alexander Orlov, Postforpost
 
MBLTDev15: Artemiy Sobolev, Parallels
MBLTDev15: Artemiy Sobolev, ParallelsMBLTDev15: Artemiy Sobolev, Parallels
MBLTDev15: Artemiy Sobolev, Parallels
 
MBLTDev15: Alexander Dimchenko, DIT
MBLTDev15: Alexander Dimchenko, DITMBLTDev15: Alexander Dimchenko, DIT
MBLTDev15: Alexander Dimchenko, DIT
 
MBLTDev: Evgeny Lisovsky, Litres
MBLTDev: Evgeny Lisovsky, LitresMBLTDev: Evgeny Lisovsky, Litres
MBLTDev: Evgeny Lisovsky, Litres
 
MBLTDev: Alexander Dimchenko, Bright Box
MBLTDev: Alexander Dimchenko, Bright Box MBLTDev: Alexander Dimchenko, Bright Box
MBLTDev: Alexander Dimchenko, Bright Box
 
MBLTDev15: Konstantin Goldshtein, Microsoft
MBLTDev15: Konstantin Goldshtein, MicrosoftMBLTDev15: Konstantin Goldshtein, Microsoft
MBLTDev15: Konstantin Goldshtein, Microsoft
 
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank
 

Recently uploaded

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 

Recently uploaded (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 

Светлана Исакова «Язык Kotlin»