Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Про що не говорять програмісти, про що мовчать науковці (ucu2015)

Про що не говорять програмісти, про що мовчать науковці (ucu2015)

Presentation about hackers, software ethics, recession of programmers' evolution for 1st semester students of CS program @ Ukrainian Catholic University

Yuriy Tymchuk

December 16, 2015
Tweet

More Decks by Yuriy Tymchuk

Other Decks in Programming

Transcript

  1. Про що не говорять програмісти,
    про що мовчать науковці
    Юрко Тимчук REVEAL, University of Lugano
    SCG, University of Bern

    View full-size slide

  2. Про що не говорять програмісти,
    про що мовчать науковці
    REVEAL, University of Lugano
    SCG, University of Bern
    yuriy_tymchuk

    View full-size slide

  3. Хто я?
    Тепер. 24 роки
    2006. 15 років
    Ph.D.
    UniBe
    Unikernel
    Фріланс команда
    Тех-підтримка / адмін. мережі
    УАРНЕТ
    Програміст
    Інтерлогіка
    Львівський фізико-
    математичний ліцей
    Програміст
    Innocode
    Мала академія наук
    України
    Бакалаврат
    Факультет інформатики. ЛНУ
    Ph.D.
    USI
    Стажування
    RMoD
    Магістратура
    Кафедра програмування. ЛНУ

    View full-size slide

  4. Швидкий вступ у
    напрямки комп’ютерних наук

    View full-size slide

  5. Обчислювальні науки

    View full-size slide

  6. Інформаційні системи

    View full-size slide

  7. Комп’ютерна графіка

    View full-size slide

  8. Інтелектуальні системи

    View full-size slide

  9. Швидкий вступ в
    об’єктно-орієнтоване програмування

    View full-size slide

  10. Objects are like people.
    They’re living, breathing
    things that have knowledge
    inside them about how to
    do things and have memory
    inside them so they can
    remember things. And
    rather than interacting with
    them at a very low level, you
    interact with them at a very
    high level of abstraction,
    like we’re doing right here.
    Steve Jobs 1995

    View full-size slide

  11. „Пральний“ об’єкт

    View full-size slide

  12. „Пральний“ об’єкт

    View full-size slide

  13. „Пральний“ об’єкт
    попериБудьЛаска:

    View full-size slide

  14. „Пральний“ об’єкт

    View full-size slide

  15. „Пральний“ об’єкт

    View full-size slide

  16. „Пральний“ об’єкт

    View full-size slide

  17. „Пральний“ об’єкт

    View full-size slide

  18. „Пральний“ об’єкт

    View full-size slide

  19. „Пральний“ об’єкт

    View full-size slide

  20. „Пральний“ об’єкт

    View full-size slide

  21. „Пральний“ об’єкт
    осьТвійПопранийОдяг:

    View full-size slide

  22. „Пральний“ об’єкт
    ?

    View full-size slide

  23. „Пральний“ об’єкт
    попериБудьЛаска:

    View full-size slide

  24. REVEAL
    (Reverse Engineering, Visualization, Evolution Analysis Lab)

    View full-size slide

  25. SCG
    Software Composition Group

    View full-size slide

  26. Traits
    Smalltalk
    Perl
    Scala
    C#
    PHP

    View full-size slide

  27. Ph.D.
    UniBe
    Unikernel
    Фріланс команда
    Тех-підтримка / адмін. мережі
    УАРНЕТ
    Програміст
    Інтерлогіка
    Львівський фізико-
    математичний ліцей
    Програміст
    Innocode
    Мала академія наук
    України
    Бакалаврат
    Факультет інформатики. ЛНУ
    Ph.D.
    USI
    Стажування
    RMoD
    Магістратура
    Кафедра програмування. ЛНУ
    Pascal C++ C++ Java C#
    PHP JavaScript
    Prolog Lisp Erlang
    Ruby
    Smalltalk
    Java
    Scala
    Ruby
    Pharo
    Pharo
    Python Racket
    Swift
    Objective-C
    C Bash

    View full-size slide

  28. Філософія хакерів
    Ха
    ́кер (англ. Hacker) — особа,
    що намагається отримати
    несанкціонований доступ до комп'ютерних
    систем, як правило з метою отримання
    секретної інформації.

    View full-size slide

  29. Філософія хакерів

    View full-size slide

  30. Доступ до знань про світ

    View full-size slide

  31. Вільна інформація

    View full-size slide

  32. Визнання навичок

    View full-size slide

  33. Мистетство програм

    View full-size slide

  34. Покращення життя

    View full-size slide

  35. Програмне забезпечення
    з відкритим кодом

    View full-size slide

  36. Програмне забезпечення
    з відкритим кодом

    View full-size slide

  37. Про катедру і базар

    View full-size slide

  38. Як стати хакером?

    View full-size slide

  39. C/С++
    Python
    Lisp
    Java
    Perl
    Рекомендації Еріка Реймонда

    View full-size slide

  40. C
    Lisp
    Pharo
    Python/Ruby
    Java
    Мої рекомендації

    View full-size slide

  41. C
    Lisp
    Pharo
    Python/Ruby
    Java
    низько-рівнева
    функіональна
    об’єктна
    скриптова
    “супер-популярна”
    Мої рекомендації

    View full-size slide

  42. На скільки пітонічний ваш код?
    countriesWithA = []

    i=0

    while i < len(countryList):
    if "a" in countryList[i]:
    countriesWithA.append(countryList[i])
    i += 1

    View full-size slide

  43. На скільки пітонічний ваш код?
    countriesWithA = []
    for i in range(len(countryList)):
    if "a" in countryList[i]:
    countriesWithA.append(countryList[i])

    View full-size slide

  44. На скільки пітонічний ваш код?
    countriesWithA = []
    for country in countryList:
    if "a" in coutry:
    countriesWithA.append(country)

    View full-size slide

  45. На скільки пітонічний ваш код?
    countriesWithA = [country for country in countryList
    if "a" in country]

    View full-size slide

  46. Потоваришуйте з Лінуксом

    View full-size slide

  47. Потрібне відео?

    View full-size slide

  48. Потрібне відео?

    View full-size slide

  49. Потрібне відео?

    View full-size slide

  50. Потрібне відео?

    View full-size slide

  51. Потрібне відео?

    View full-size slide

  52. Потрібне відео?

    View full-size slide

  53. використовуйте
    покращуйте
    робіть внесок у

    View full-size slide

  54. Інша сторона хакерства

    View full-size slide

  55. Samy Kamkar
    “but most of all, samy is my hero”

    View full-size slide

  56. Samy Kamkar
    “but most of all, samy is my hero”
    20 годин - 1 000 000 друзів

    View full-size slide

  57. Aaron Swartz

    View full-size slide

  58. Aaron Swartz

    View full-size slide

  59. Ще трохи про етику

    View full-size slide

  60. Ви зміните світ… пам’ятайте про це

    View full-size slide

  61. Хто має доступ до пошти?

    View full-size slide

  62. Хто має доступ до пошти?

    View full-size slide

  63. Хто має доступ до пошти?

    View full-size slide

  64. Хто має доступ до пошти?

    View full-size slide

  65. Хто має доступ до пошти?

    View full-size slide

  66. Хто має доступ до пошти?

    View full-size slide

  67. Хто має доступ до пошти?

    View full-size slide

  68. Хто має доступ до пошти?

    View full-size slide

  69. Хто має доступ до пошти?

    View full-size slide

  70. Хто має доступ до пошти?

    View full-size slide

  71. Хто має доступ до пошти?

    View full-size slide

  72. Хто має доступ до пошти?

    View full-size slide

  73. Хто має доступ до пошти?

    View full-size slide

  74. Хто має доступ до пошти?

    View full-size slide

  75. Хто має доступ до пошти?

    View full-size slide

  76. Хто має доступ до пошти?

    View full-size slide

  77. Чи потрібна вам безпека?
    From:
    To:
    Subject:
    року виповнюєтьÑÑроків з Ð´Ð½Ñ Ð·Ð°ÑнувÐ
    °Ð½Ð½Ñ ЛьвівÑького національного
    універÑитету імені Івана Франка.
    ІÑÑ‚Ð¾Ñ€Ñ–Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð›ÑŒÐ²Ñ–Ð²Ñького уні
    верÑитету ÑÑгає витоками Ð¥VІІ ÑÑ‚.
    У Ð¥VІ – Ð¥VІІ ÑÑ‚. центрами культурного
    Ð¶Ð¸Ñ‚Ñ‚Ñ Ð½Ð° українÑьких землÑÑ… були цеÑ
    €ÐºÐ¾Ð²Ð½Ñ– братÑтва.
    Mr. Smith
    Ms. Smith
    cancer

    View full-size slide

  78. Що робити зі старим кодом?

    View full-size slide

  79. Чірлідери для програмістів?

    View full-size slide

  80. Technical Debt
    очима замовника очима програміста

    View full-size slide

  81. Еволюція програмістів

    View full-size slide

  82. Еволюція людства та програмістів

    View full-size slide

  83. Еволюція людства та програмістів

    View full-size slide

  84. Еволюція людства та програмістів

    View full-size slide

  85. Еволюція людства та програмістів

    View full-size slide

  86. Еволюція людства та програмістів

    View full-size slide

  87. Еволюція людства та програмістів

    View full-size slide

  88. Еволюція людства та програмістів

    View full-size slide

  89. Чиста об’єктна мова
    Прекрасна спільнота
    Повний доступ
    Елегантна
    Жива
    100% MIT ліцензія
    Mac, Linuxes, Windows, iOS
    http://pharo.org

    View full-size slide

  90. exampleWithNumber: x

    "This is a complete* syntax of Pharo language"
    | y |
    true & false not & (nil isNil)
    ifFalse: [ self halt ].
    y := self size + super size.
    { 1 . 2 . #($a #a 'a' 1.0 1) } do: [ :each |
    Transcript
    show: each class name;
    show: each printString;
    show: ' ' ].
    ^ x < y

    View full-size slide

  91. middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  92. #middleOf:and:
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  93. #middleOf:and:
    b
    a
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  94. #middleOf:and:
    b
    a
    sum
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  95. #middleOf:and:
    b
    a
    sum
    ^st
    st
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  96. #middleOf:and:
    b
    a
    sum
    ^st
    st
    :=
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  97. #middleOf:and:
    b
    a
    sum
    ^st
    st
    :=
    sum +
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  98. #middleOf:and:
    b
    a
    sum
    ^st
    st
    :=
    sum +
    a b
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  99. #middleOf:and:
    b
    a
    sum
    ^st
    st
    :=
    sum +
    a b
    /
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  100. #middleOf:and:
    b
    a
    sum
    ^st
    st
    :=
    sum +
    a b
    /
    sum 2
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2
    Синтаксичні дерева

    View full-size slide

  101. Платформа для аналізу даних
    http://moosetechnology.org

    View full-size slide

  102. Платформа для аналізу даних
    http://moosetechnology.org

    View full-size slide

  103. Платформа для аналізу даних
    http://moosetechnology.org

    View full-size slide

  104. Платформа для аналізу даних
    http://moosetechnology.org

    View full-size slide

  105. Smalldromeda

    View full-size slide

  106. Smalldromeda

    View full-size slide

  107. Core Pharo dev
    (RMoD)
    Smalldromeda

    View full-size slide

  108. MOOSE
    Smalldromeda

    View full-size slide

  109. Seaside
    Smalldromeda

    View full-size slide

  110. Духи минулого різдва
    (Pharo10)
    Smalldromeda

    View full-size slide

  111. Smalldromeda

    View full-size slide

  112. Сузір’я Бернарта

    View full-size slide

  113. http://yuriy.tymch.uk/Smalldromeda/

    View full-size slide

  114. Якість коду

    View full-size slide

  115. Якість коду
    Наскільки легко
    зрозуміти
    змінити
    перевірити
    програмне забезпечення
    ISO/IEC, ISO/IEC 9126. Software Engineering – Product quality 6.5. ISO/IEC, 2001
    (maintainability)

    View full-size slide

  116. Code Review
    A. Bacchelli, C. Bird. Expectations, outcomes, and challenges of modern code review. In Proceedings of ICSE’13, pp. 712–721, IEEE, 2013

    View full-size slide

  117. Статичний аналізатор

    View full-size slide

  118. Статичний аналізатор

    View full-size slide

  119. Правила якості
    Статичний аналізатор

    View full-size slide

  120. Вихідний код
    Правила якості
    Статичний аналізатор

    View full-size slide

  121. Правила якості
    Статичний аналізатор

    View full-size slide

  122. Критики
    Правила якості
    Статичний аналізатор

    View full-size slide

  123. Visual Design Inspection
    Y. Tymchuk, A. Mocci, and M. Lanza. Code Review: Veni, ViDI, Vici. In Proceedings of SANER’15, pp. 151-160, IEEE, 2015

    View full-size slide

  124. Y. Tymchuk, A. Mocci, and M. Lanza. Code Review: Veni, ViDI, Vici. In Proceedings of SANER’15, pp. 151-160, IEEE, 2015
    Y. Tymchuk, A. Mocci, and M. Lanza. Vidi: The Visual Design Inspector. In Proceedings of ICSE’15, to be published, IEEE, 2015
    ViDI

    View full-size slide

  125. Відірваною від середовища розробки

    View full-size slide

  126. QualityAssistant

    View full-size slide

  127. yuriy_tymchuk

    View full-size slide