Learning A New Language While Learning A New Language - AppDevCon, Amsterdam, March 2018

Learning A New Language While Learning A New Language - AppDevCon, Amsterdam, March 2018

[UPDATE: I've tried reuploading this four times and it's still not getting past processing the first slide. Working with SpeakerDeck to try to figure out what the hell is going on but until then, please enjoy this older version: https://speakerdeck.com/designatednerd/learning-a-new-language-while-learning-a-new-language-gdg-devfest-nl-november-2017]

An updated version of my talk about learning Kotlin and Dutch at the same time.

Description:
It turns out there are a lot of things that are similar about learning a human language similar to one you already know and a computer language similar to one you already know. Some things being super-similar provides a huge leg up, but there are plenty of false friends in both types of language, and there are plenty of differences which make you wonder why you ever thought these things were similar in the first place. This is a tale of the triumphs and perils (and eerie similarities) of learning Dutch as a native English speaker and Kotlin as a developer with a good grip on Swift.

C4861b1dfdf3bbb21faec4a1acdf183d?s=128

Ellen Shapiro

March 16, 2018
Tweet

Transcript

  1. Learning a new language while Learning a new language AppDevCon

    | Amsterdam | March 2018 @DesignatedNerd | bakkenbaeck.com | justhum.com
  2. None
  3. None
  4. None
  5. None
  6. ANYWAY

  7. !

  8. None
  9. None
  10. None
  11. !

  12. !

  13. !!!!!

  14. None
  15. None
  16. !

  17. None
  18. None
  19. None
  20. vs.

  21. ANYWAY

  22. None
  23. None
  24. None
  25. None
  26. None
  27. ->

  28. None
  29. Fail hard. Fail often.

  30. Fail hard. Fail often. Learn. Improve.

  31. Spreekt je Engels?

  32. (iedereen spreekt Engels)

  33. Amsterdam ME: Kan...ik...uh, betaal...voor...

  34. Amsterdam ME: Kan...ik...uh, betaal...voor... THEM: It's OK, I speak English!

  35. Amsterdam ME: Kan...ik...uh, betaal...voor... THEM: It's OK, I speak English!

    [rest of conversation in English]
  36. Nijmegen ME: Kan...ik...uh, betaal...voor...

  37. Nijmegen ME: Kan...ik...uh, betaal...voor... THEM: [smiling and waiting]

  38. Nijmegen ME: Kan...ik...uh, betaal...voor... THEM: [smiling and waiting] ME: Uh,

    mijn...maaltijd met een creditcard?
  39. Nijmegen ME: Kan...ik...uh, betaal...voor... THEM: [smiling and waiting] ME: Uh,

    mijn...maaltijd met een creditcard? THEM: Nee, we accepteren alleen pinpas.
  40. Nijmegen ME: Kan...ik...uh, betaal...voor... THEM: [smiling and waiting] ME: Uh,

    mijn...maaltijd met een creditcard? THEM: Nee, we accepteren alleen pinpas. ME: Uhhh...ik heb niet...
  41. Nijmegen ME: Kan...ik...uh, betaal...voor... THEM: [smiling and waiting] ME: Uh,

    mijn...maaltijd met een creditcard? THEM: Nee, we accepteren alleen pinpas. ME: Uhhh...ik heb niet...spreekt je Engels?
  42. Nijmegen ME: Kan...ik...uh, betaal...voor... THEM: [smiling and waiting] ME: Uh,

    mijn...maaltijd met een creditcard? THEM: Nee, we accepteren alleen pinpas. ME: Uhhh...ik heb niet...spreekt je Engels? THEM: Of course, I lived in New York for three years!
  43. None
  44. None
  45. None
  46. Don't bend a new language to fit what you already

    know
  47. Naar vs. Near

  48. Ik woon naar het station != I live near the

    station
  49. Java-style Singleton private var instance: SomeService? = null fun getServiceInstance():

    SomeService { if (instance == null) { val retrofit = Retrofit.Builder() .baseUrl("https://example.com") .addConverterFactory(GsonConverterFactory.create()) .build() instance = retrofit.create<SomeService>(SomeService::class.java) } return instance as SomeService }
  50. Moar Kotlin-ier Singleton val instance: SomeService by lazy { val

    retrofit = Retrofit.Builder() .baseUrl("https://example.com") .addConverterFactory(GsonConverterFactory.create()) .build() retrofit.create<SomeService>(SomeService::class.java) }
  51. None
  52. Early examples seem contrived

  53. None
  54. None
  55. None
  56. None
  57. None
  58. None
  59. ANYWAY

  60. None
  61. None
  62. None
  63. Keep going

  64. Keep going (it will eventually make sense)

  65. Friends

  66. True Friends exactly the same computer -> computer student ->

    student weekend -> weekend
  67. True Friends exactly the same computer -> computer student ->

    student weekend -> weekend map -> map filter -> filter
  68. True Friends exactly the same close enough! computer -> computer

    work -> werk student -> student orange -> oranje weekend -> weekend text -> tekst map -> map filter -> filter
  69. True Friends exactly the same close enough! computer -> computer

    work -> werk student -> student orange -> oranje weekend -> weekend text -> tekst map -> map func -> fun filter -> filter enum -> enum class
  70. None
  71. False Friends

  72. None
  73. !

  74. None
  75. Slim

  76. None
  77. None
  78. reduce

  79. None
  80. None
  81. None
  82. False friends are easier to remember

  83. Words or concepts with no equivalent

  84. Gezellig

  85. via StuffDutchPeopleLike.com

  86. None
  87. None
  88. None
  89. None
  90. Lekker

  91. Lekker!

  92. None
  93. None
  94. None
  95. None
  96. None
  97. async / await

  98. fun main(args: Array<String>) = runBlocking<Unit> { val a = async(coroutineContext)

    { log("I'm computing a piece of the answer") 6 } val b = async(coroutineContext) { log("I'm computing another piece of the answer") 7 } log("The answer is ${a.await() * b.await()}") }
  99. None
  100. Obligatory Summary Slide

  101. Verplichte Samenvetting Dia

  102. Verplichte Samenvetting Dia → Fail often and hard. Learn from

    your failures.
  103. Verplichte Samenvetting Dia → Fail often and hard. Learn from

    your failures. → Resist the urge to bend a new language to fit one you already know
  104. Verplichte Samenvetting Dia → Fail often and hard. Learn from

    your failures. → Resist the urge to bend a new language to fit one you already know → Don't worry if the initial examples seem contrived.
  105. Verplichte Samenvetting Dia → Fail often and hard. Learn from

    your failures. → Resist the urge to bend a new language to fit one you already know → Don't worry if the initial examples seem contrived. → Find your friends, true and false.
  106. Verplichte Samenvetting Dia → Fail often and hard. Learn from

    your failures. → Resist the urge to bend a new language to fit one you already know → Don't worry if the initial examples seem contrived. → Find your friends, true and false. → Keep trying. You'll figure it out eventually.
  107. ! Bedankt! !