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 Slide

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

    View Slide

  3. View Slide

  4. Хто я?

    View Slide

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

    View Slide

  6. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. View Slide

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

    View Slide

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

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

    View Slide

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

    View Slide

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

    View Slide

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

    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. „Пральний“ об’єкт
    попериБудьЛаска:

    View Slide

  28. View Slide

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

    View Slide

  30. CodeCity

    View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. SCG
    Software Composition Group

    View Slide

  39. Traits

    View Slide

  40. Traits
    Smalltalk
    Perl
    Scala
    C#
    PHP

    View Slide

  41. View Slide

  42. View Slide

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

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    i=0

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  71. Samy Kamkar

    View Slide

  72. Samy Kamkar

    View Slide

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

    View Slide

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

    View Slide

  75. Aaron Swartz

    View Slide

  76. Aaron Swartz

    View Slide

  77. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    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. Xerox Alto

    View Slide

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

    View Slide

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

  111. View Slide

  112. View Slide

  113. View Slide

  114. View Slide

  115. View Slide

  116. View Slide

  117. View Slide

  118. View Slide

  119. View Slide

  120. View Slide

  121. View Slide

  122. View Slide

  123. View Slide

  124. View Slide

  125. View Slide

  126. View Slide

  127. View Slide

  128. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  139. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  144. View Slide

  145. View Slide

  146. View Slide

  147. View Slide

  148. View Slide

  149. View Slide

  150. View Slide

  151. Smalldromeda

    View Slide

  152. Smalldromeda

    View Slide

  153. Core Pharo dev
    (RMoD)
    Smalldromeda

    View Slide

  154. MOOSE
    Smalldromeda

    View Slide

  155. Seaside
    Smalldromeda

    View Slide

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

    View Slide

  157. Smalldromeda

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  162. 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

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  169. Find Bugs

    View Slide

  170. 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

  171. 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

  172. View Slide

  173. View Slide

  174. ViDI є …

    View Slide

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

    View Slide

  176. QualityAssistant

    View Slide

  177. View Slide

  178. View Slide

  179. View Slide

  180. View Slide

  181. View Slide

  182. yuriy_tymchuk

    View Slide