[ukr] programming and technology overview for non-it audience
DESCRIPTION
An introductory presentation about computer programming, modern IT trends and programming languages for non-IT audience.TRANSCRIPT
Сучасне програмування
Юрій Гуц, R&D Engineer @ ELEKSлистопад 2012
Чим ми займаємось?
Як ми це робимо?Які бувають IT-спеціалісти?
Що зараз популярно?
Чому це для нас цікаво?
Що треба знати та вміти?
Чому виникають нові технології?
Як створюються сучасні системи?
Чим же ми займаємось?
Сучасне програмування (огляд)листопад 2012
Ми працюємо з комп’ютерамиМіф 1
(або «програмісти керують комп’ютером, натискаючи клавіші»)
Сучасне програмування (огляд)листопад 2012
Програмісти можуть працювати навіть на ткацькому станку!
Сучасне програмування (огляд)листопад 2012
(Google: “Jacquard Loom”)
«Інформатика — це така ж наука про комп’ютери, як астрономія —наука про телескопи.»
Е. Дейкстра
Комп’ютер лише допомагає нам при розробці.
Машина вміє думатиМіф 2
Сучасне програмування (огляд)листопад 2012
Меня два раза спрашивали [члены Парламента]:«Скажите на милость, мистер Бэббидж, что случится, если вы введете в машину неверные цифры? Cможем ли мы получить правильный ответ?»Я не могу себе даже представить, какая путаница в голове может привести к подобному вопросу.Чарльз Беббідж (Charles Babbage), 19 ст.
Машина вміє виконувати інструкції
Сучасне програмування (огляд)листопад 2012
Наша справа — детально пояснити їй, що робити
Для цього треба спілкуватися спільною мовою
Для комп’ютера це — числа
Сучасне програмування (огляд)листопад 2012
Як пояснити комп’ютеру,що треба додати два числа (19+23)?
Приклад:
160 16 1 138 30 17 1 2 195 162 18 1 180 76 205 33 19 23
(x86, MS-DOS, COM)
Сучасне програмування (огляд)листопад 2012
Зручність для користувача
• Дані потрібно вводити і виводити(клавіатура, мишка, сканер, веб-камера, мікрофон, монітор, принтер)
• Програма має допомагати користувачу (обробляти помилки, давати підказки)
Складність задачі
• Даних може бути дуже багато• Операції можуть бути складнішими, ніж
додавання двох чиселВ сучасних програмах потрібні мільйони
чисел-інструкцій,щоб описати бажану поведінку комп’ютера
Сучасне програмування (огляд)листопад 2012
А можна програмувати якось простіше?!
Сучасне програмування (огляд)листопад 2012
Введемо мову програмування, трохи ближчу до людської.
.model tiny
.386
.data num1 db 19 num2 db 23 sum db ?
.codeorg 100h
start: mov al, num1 mov bl, num2 add al, bl mov sum, al
mov ah, 4ch int 21h
end start
Нехай комп’ютер сам її транслює в числа!
Сучасне програмування (огляд)листопад 2012
Це називається «простіше»?!
Сучасне програмування (огляд)листопад 2012
Щоб подолати складність,потрібно абстрагуватися від деталей
Наприклад, відкинути особливості роботи «заліза»і зосередитися на логіці програми
Розробити технології, що дозволяютьприховати непотрібні деталі
Обираємо технологію залежно від того,що для нас важливо, а що — ні
САМЕ ТОМУ ЇХ СЬОГОДНІ ТАК БАГАТО
Сучасне програмування (огляд)листопад 2012
Так уже краще
print 19 + 23
Додавання двох чисел (Python)
Сучасне програмування (огляд)листопад 2012
Кілька відомих абстракцій
Бази даних
• Як забезпечити надійне зберігання даних?• Як забезпечити зручний і швидкий пошук і
редагування?
Комп’ютерні мережі
• Як змусити машин спілкуватися між собою?• Як розділити складну задачу на кілька
машин?
«клієнт-сервер» P2P (peer-to-peer)
Це нудна і монотонна роботаМіф 3
Сучасне програмування (огляд)листопад 2012
An engineer is concerned with applying scientific knowledge and ingenuity to develop solutions for technical, social and economic problems.
Ingenuity is the quality of being clever, original, and inventive, often in the process of applying ideas to solve problems or meet challenges.
Програмний код — тільки кінцевий результат.
Здатність знайти красиве інженерне рішення — прирівнюється до мистецтва.(писати гарний код — в тому числі)
Сучасне програмування (огляд)листопад 2012
Основні технологічні напрямки
Desktop
Web
Mobile
Embedded
ПЗ для настільних комп’ютерівDesktop
Сучасне програмування (огляд)листопад 2012
Приклади:MS Office, Photoshop, CorelDRAW, AutoCAD, Sony Vegas, «важкі» ігри
Особливості:• Зазвичай багаті апаратні
ресурси• Багато програм уже мають web-
аналоги
ПЗ, доступне через ІнтернетWeb
Сучасне програмування (огляд)листопад 2012
Приклади:Facebook, Wikipedia, YouTube, LinkedIn, Google Search, Twitter
Особливості:• Розподілена природа• Багато одночасних користувачів• Універсальний доступ з різних
пристроїв
ПЗ для мобільних пристроївMobile
Сучасне програмування (огляд)листопад 2012
Приклади:Аплікації для планшетів, смартфонів, електронних книг (iBooks, Instagram, …)
Особливості:• Швидкість і енергоекономність• Наявність сенсорів (GPS,
гіроскоп, …)• Обмежені обчислювальні
потужності• «Зоопарк» пристроїв
Вузькоспеціалізоване ПЗ,інтегроване в конкретне апаратне
забезпечення
Embedded
Сучасне програмування (огляд)листопад 2012
Приклади:Бортові комп’ютери автомобілів і літаків, ПЗ для медобладнання, систем безпеки, …
Особливості:• «Низькорівневість» програмування• Небагато взаємодії з користувачем• Вимоги до швидкодії• Вимоги до надійності («mission
critical»)
Сучасне програмування (огляд)листопад 2012
Популярні мови програмування
С / С++ JavaScript
Java Python
C# (.NET) Ruby
PHPФункціональні
(Lisp [+dialects], Haskell, Erlang, F#)
Вивчення «правильної» мови програмування зробить тебе хорошим, універсальним
спеціалістом
Міф 4
Сучасне програмування (огляд)листопад 2012
Будь-яка технологія — це інструмент.
Кожен інструмент має область застосування, свої плюси й мінуси.
If all you have is a hammer,everything looks like a nail. Abraham Maslow
Сучасне програмування (огляд)листопад 2012
«Навчитись і перевчитись»