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

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

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

Presentation about hackers, recession of programmers' evolution, and about my research for the bachelor students of CS program @ Ukrainian Catholic University

Yuriy Tymchuk

October 27, 2016
Tweet

More Decks by Yuriy Tymchuk

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. View Slide

  4. Хто я?

    View Slide

  5. Хто я?

    View Slide

  6. Хто я?
    Тепер. 25 років

    View Slide

  7. Хто я?
    Тепер. 25 років
    2006. 15 років

    View Slide

  8. Хто я?
    Тепер. 25 років
    2006. 15 років
    Львівський фізико-
    математичний ліцей

    View Slide

  9. Хто я?
    Тепер. 25 років
    2006. 15 років
    Львівський фізико-
    математичний ліцей
    Мала академія наук
    України

    View Slide

  10. Хто я?
    Тепер. 25 років
    2006. 15 років
    Львівський фізико-
    математичний ліцей
    Мала академія наук
    України
    Бакалаврат
    Факультет інформатики. ЛНУ

    View Slide

  11. Хто я?
    Тепер. 25 років
    2006. 15 років
    Тех-підтримка / адмін. мережі
    УАРНЕТ
    Львівський фізико-
    математичний ліцей
    Мала академія наук
    України
    Бакалаврат
    Факультет інформатики. ЛНУ

    View Slide

  12. Хто я?
    Тепер. 25 років
    2006. 15 років
    Unikernel
    Фріланс команда
    Тех-підтримка / адмін. мережі
    УАРНЕТ
    Львівський фізико-
    математичний ліцей
    Мала академія наук
    України
    Бакалаврат
    Факультет інформатики. ЛНУ

    View Slide

  13. Хто я?
    Тепер. 25 років
    2006. 15 років
    Unikernel
    Фріланс команда
    Тех-підтримка / адмін. мережі
    УАРНЕТ
    Львівський фізико-
    математичний ліцей
    Мала академія наук
    України
    Бакалаврат
    Факультет інформатики. ЛНУ
    Магістратура
    Кафедра програмування. ЛНУ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. View Slide

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

    View Slide

  27. Objects are like people. They’re
    living, breathing things that have
    knowledge inside them about how
    to do things and have memory
    i n s i d e t h e m s o t h e y c a n
    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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. View Slide

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

    View Slide

  42. CodeCity

    View Slide

  43. SCG
    Software Composition Group

    View Slide

  44. Traits

    View Slide

  45. Traits
    Smalltalk
    Perl
    Scala
    C#
    PHP

    View Slide

  46. View Slide

  47. View Slide

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

    View Slide

  49. Хто я?

    View Slide

  50. View Slide

  51. Дія 1: Філософія Хакерів

    View Slide

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

    View Slide

  53. Філософія хакерів
    Hacker — originally, someone who
    makes furniture with an axe.
    Хакер — оригінально, людина, яка робить
    меблі сокирою

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    i=0

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  76. View Slide

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

    View Slide

  78. View Slide

  79. If that guy knew half the shit that I know,
    his fuzzy little head would explode.

    View Slide

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

    View Slide

  81. Samy Kamkar

    View Slide

  82. Samy Kamkar

    View Slide

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

    View Slide

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

    View Slide

  85. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  94. A як же лінукс?

    View Slide

  95. Метафора із стоматологами

    View Slide

  96. Метафора із стоматологами

    View Slide

  97. Метафора із стоматологами

    View Slide

  98. Метафора із стоматологами

    View Slide

  99. Метафора із стоматологами

    View Slide

  100. Метафора із стоматологами

    View Slide

  101. Метафора із стоматологами

    View Slide

  102. View Slide

  103. View Slide

  104. View Slide

  105. View Slide

  106. View Slide

  107. View Slide

  108. View Slide

  109. View Slide

  110. View Slide

  111. Xerox Alto

    View Slide

  112. View Slide

  113. View Slide

  114. View Slide

  115. Дія 3:

    View Slide

  116. Програміст

    View Slide

  117. Програміст

    View Slide

  118. Програміст

    View Slide

  119. Програміст

    View Slide

  120. Піднімаємо пітонічність
    countriesWithA = []

    i=0

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

    View Slide

  121. Піднімаємо пітонічність
    countriesWithA = []

    i=0

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

    View Slide

  122. Піднімаємо пітонічність
    countriesWithA = []
    for country in countryList:
    if "a" in country:
    countriesWithA.append(country)
    countriesWithA = []

    i=0

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

    View Slide

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

    View Slide

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

    View Slide

  125. 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 Slide

  126. Find Bugs

    View Slide

  127. 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 Slide

  128. 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 Slide

  129. View Slide

  130. ViDI є …

    View Slide

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

    View Slide

  132. QualityAssistant

    View Slide

  133. Very disturbing
    Disturbing
    Sometimes Disturbing
    Not influential
    Sometimes Useful
    Useful
    Very useful
    How do you Snd QualityAssistant?

    View Slide

  134. Very disturbing
    Disturbing
    Sometimes Disturbing
    Not influential
    Sometimes Useful
    Useful
    Very useful
    How do you Snd QualityAssistant?

    View Slide

  135. Very disturbing
    Disturbing
    Sometimes Disturbing
    Not influential
    Sometimes Useful
    Useful
    Very useful
    46%
    29%
    17%
    4%
    4%
    How do you Snd QualityAssistant?

    View Slide

  136. Але CriticBrowser вже існує пів дюжини років!

    View Slide

  137. Як часно ви користуєтеся CriticBrowser?

    View Slide

  138. Не знаю такого
    Ніколи
    Щороку
    Щомісяця
    Щотижня
    Щодня
    24%
    24%
    22%
    11%
    11%
    9%
    Як часно ви користуєтеся CriticBrowser?

    View Slide

  139. Аналіз еволюцїї Фаро

    View Slide

  140. 680
    Versions
    Аналіз еволюцїї Фаро

    View Slide

  141. 40K
    30K
    20K
    10K
    680
    Versions
    0
    Аналіз еволюцїї Фаро

    View Slide

  142. 40K
    30K
    20K
    10K
    680
    Versions
    Critiques
    0
    Аналіз еволюцїї Фаро
    Number of Critiques Σ=19.5M

    View Slide

  143. 680
    Versions
    Аналіз еволюцїї Фаро
    Number of Critiques Σ=19.5M Δ=64.5K

    View Slide

  144. Number of Critiques Σ=19.5M Δ=64.5K
    Погана еволюція

    View Slide

  145. Number of Critiques Σ=19.5M Δ=64.5K
    Добра еволюція

    View Slide

  146. Number of Critiques Σ=19.5M Δ=64.5K

    View Slide

  147. Packages
    Versions
    Rules

    View Slide

  148. View Slide

  149. View Slide

  150. 46%
    29%
    17%
    4%
    4%

    View Slide

  151. View Slide