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

Професия - програмист

82bafb0432ce4ccc9dcc26f94d5fe5bc?s=47 Minko Gechev
October 16, 2014

Професия - програмист

Презентация от програмата "Европейска международна седмица на програмирането" 2014, в СОУ "Васил Левски", гр. Троян.

82bafb0432ce4ccc9dcc26f94d5fe5bc?s=128

Minko Gechev

October 16, 2014
Tweet

Transcript

  1. Професия програмист Минко Гечев

  2. Минко Гечев • Професия • Разработчик • Консултант • Трейнър

    • Лектор и асистент във ФМИ ! • Образование: • СУ “Св. Климент Охридски” • СОУ “Св. Климент Охридски” ! • Хобита: • Софтуер с отворен код • Софтуерно инженерство • Математика Twitter GitHub Блог
  3. Съдържание • Програмиране. Какво е това? • Какво е да

    си програмист? • Работа на програмиста • Нужна ли ни е математика? • Как да започнем?
  4. Какво представлява програмирането?

  5. –Brian Kernighan “Controlling complexity is the essence of computer programming.”

  6. Програмиране • Програмирането е процес, който води от формулиран изчислителен

    проблем до изпълнима програма. • Изчислителният проблем може да бъде всичко - от уеб сайт на любимата ми котка Джеси, до създаване на сложен алгоритъм за GPS система.
  7. Примери за създаване на софтуер • Създаване на уеб сайт

    • Софтуер за GPS навигация за автомобил • Софтуер за четец на пръстови отпечатаци на новия ви (не чак толкова) iPhone • Създаване на софтуер за банкомат • Софтуер за кафе машина • Разпознаване на човешки образи от снимка • Система за управление на ресурсите на голяма корпорация • Създаване на компютърна игра • Създаване на бот за автоматизирана игра на Counter Strike • “Разбиване на паролата на фейсбук” на гаджето ви • и много др…
  8. Какво представлява програмирането? • Обикновено програмирането се свежда до въвеждане

    на текст, който след определена обработка, бива изпълнен (интерпретиран) от компютъра. • “Текстът” въведен от програмистите представлява поредица от инструкции, които компютърът трябва да изпълни.
  9. Как изглежда една програма?

  10. ! ! ! ++++++++[>++++[>++>+++>+++>+<<<<-­‐]>+>+>-­‐>>+ [<]<-­‐]>>.>-­‐-­‐-­‐.+++++++..+++.>>.<-­‐.<.++ +.-­‐-­‐-­‐-­‐-­‐-­‐.-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐.>>+.>++. Result: Hello world

  11. None
  12. ! ! ! ! print 'Hello world!'

  13. 10.times do puts 'Hello world!' end

  14. Езици за програмиране

  15. None
  16. Езици за програмиране • C • Java • Pascal •

    JavaScript • TypeScript • Dart • CoffeeScript • Ruby • Perl • Haskell • C# • Scala • D • C++ • JSX • PHP • F# • SmallTalk • Caml • COBOL • Fortran • Erlang • Go • Swift • Objective-C • J • ksh • Lua • Lynx • Io • Simula • NPL • Oz • Rust • Scheme • Visual Basic • R • Self • Clojure • Python • и много други…
  17. Езици за програмиране • Огромно количество • Комбинирани около няколко

    общи идеи със солидна математическа основа • Излишно и невъзможно е да се отдели време за научаване на всичките езици • В перфектния случай научете по един или няколко езика от различни “парадигми”
  18. Някои си представят програмистите така…

  19. None
  20. Други си представят програмистите така…

  21. None
  22. Програмисти са…

  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. Може би по-скоро…

  30. None
  31. Няколко примера…

  32. Paint на 20 реда код

  33. Семпла игра с JavaScript и HTML5 Код на приложението

  34. Семпла игра с JavaScript и HTML5 + “Kinect” Код на

    приложението
  35. Видео разговори в реално време Код на приложението

  36. Windows в iPad

  37. WebGL 3D game engine

  38. –Edsger Dijkstra “There should be no such thing as boring

    mathematics.”
  39. Демонстрация 1

  40. Case study - алгоритъм за разпознаване на движение

  41. Проста имплементация

  42. Малко допълнителна информация… • Можем да мислим за дадено изображение

    като “решетка” от квадратчета. Всяко квадратче в решетката има някакъв цвят. Това е т. нар. растерна графика. • Цвета на всяко квадратче се се представя с три стойности: • Red ϵ [0, 255] • Green ϵ [0, 255] • Blue ϵ [0, 255] • Например черното е: (0, 0, 0), а бялото (255, 255, 255).
  43. None
  44. None
  45. Полезна имплементация…

  46. Машинно (само)обучение • Machine learning is a subfield of computer

    science and statistics that deals with the construction and study of systems that can learn from data, rather than follow only explicitly programmed instructions… • Computer science is considered by some to have a much closer relationship with mathematics than many scientific disciplines, with some observers saying that computing is a mathematical science.
  47. Но не се плашете! В повечето случаи са ви необходими

    основни познания по математика.
  48. –Yogi Berra “In theory there is no difference between theory

    and practice. In practice there is.”
  49. None
  50. Как да започнем… • Научете английски • Посещавайте часовете по

    информатика и математика • Използвайте онлайн ресурси като: • Code School • Coursera • Khan Academy • code.org
  51. Къде да уча? • Има отлични чуждестранни университети като: •

    MIT • Stanford University • University of Cambridge • University of California Berkley • University of Oxford • Technical University of Munich Но не всички са достъпни финансово (пр. една година в Stanford е около $80 000).
  52. Образованието в чужбина не винаги е оптималният избор.

  53. Нивото на някои български университети е добро! • ФМИ на

    СУ • Софтуерен Университет • Технически Университет София • Нов Български Университет • Американски Университет • Университетът по библиотекознание и информационни технологии
  54. Има множество курсове и ресурси онлайн • Coursera - безплатни

    онлайн курсове от университети като Stanford, Princeton, TUM и много други. • HackBulgaria - безплатни и платени курсове по модерни технологии, използващи иновативна методология за преподаване • Telerik Academy - безплатни курсове по модерни технологии • И други
  55. Защо да стана програмист?

  56. Като програмист ти създаваш част от бъдещето!

  57. Ако това не е достатъчно като мотивация…

  58. None
  59. None
  60. Но не забравяйте!

  61. Трябва да изпитвате удоволствие от това, което правите!

  62. –Linus Torvalds “Most good programmers do programming not because they

    expect to get paid or get adulation by the public, but because it is fun to program.”
  63. Благодаря за вниманието!