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

№ 1. Языки программирования

ОПК
February 08, 2021

№ 1. Языки программирования

1. Организационные и формальные вопросы.
2. Пользователь всегда прав!
3. Что такое язык программирования?
4. Краткая история развития языков программирования: машинные коды, ассемблер, языки высокого уровня.
5. Способы трансляции: компиляция и интерпретация.
6. Виртуальные машины.
7. Парадигмы программирования: императивная, функциональная, логическая.
8. Обзор языков программирования.
9. Язык Python, история.

ОПК

February 08, 2021
Tweet

More Decks by ОПК

Other Decks in Programming

Transcript

  1. НЕФОРМАЛЬНАЯ ЧАСТЬ • Я – Владимир Парфиненко . • Бакалавр

    физики (АФТИ ФФ), 
 магистр математики (кафедра программирования ММФ) . • Профессиональный системный программист (Huawei) . • Контакт: vladimir.par fi [email protected]
  2. КОРОТКО О ГЛАВНОМ • Первый семестр: алгоритмы, структуры данных, практики

    программирования . • Базовый язык программирования — Python.
  3. КОРОТКО О ГЛАВНОМ • Второй семестр: низкоуровневое программирование, язык C

    и снова алгоритмы, структуры данных … • Базовый язык программирования — C.
  4. УСЛОВИЯ РАБОТЫ • Лекции: алгоритмы, структуры данных, практики программирования .

    • Семинары: применение теоретических знаний на практике . • Самостоятельная работа: неотъемлемая часть практики . • Материалы на сайте opk.afti.ru: база задач и слайды лекций.
  5. СЕМИНАРЫ «Понедельники » 16:20 – 19:4 0 «Среды » 16:20

    – 19:4 0 «Субботы » 14:30 – 17:5 0 Тут были списки групп, которые уже устарели.
  6. ФОРМА ОЦЕНКИ • Работа в семестре: оценивается семинаристами, 
 как-то

    коррелирует с баллами на opk.afti.ru . • Проект: оценивается по множеству критериев на зачете . • Теория: два вопроса по теории на зачете . • Бонус теория: теоретические задачки на лекциях.
  7. КРАТКО О ПРОГРАММИРОВАНИИ • Есть тупой кусок кремния (1), годный

    к повторяющимся, рутинным операциям . • Есть пользователь (2) . • Программист (3) отбирает у пользователя (2) рутину, объясняя куску кремния (1), как ее выполнять . • В основе труда программиста (3) лежит модель системы . • Хорошая программа = хорошая модель.
  8. ЧТО ЕСЛИ... • Программист отобрал у пользователя не ту рутину..

    . • Программист плохо объяснил задачу тупому куску кремния.. . • Программист понял пользователя неправильно.. . • Модель у программиста в голове не соответствует действительности … • Программист решил, что он умный и сам правильно знает, как пользователю жить … • Пользователю никто не объяснил, как пользоваться программой…
  9. ПЕРВЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ Язык низкого уровня — язык Ассемблера .TITLE

    HELLO WORLD .MCALL .TTYOUT,.EXIT HELLO:: MOV #MSG,R1 ;STARTING ADDRESS OF STRING 1$: MOVB (R1)+,R0 ;FETCH NEXT CHARACTER BEQ DONE ;IF ZERO, EXIT LOOP .TTYOUT ;OTHERWISE PRINT IT BR 1$ ;REPEAT LOOP DONE: .EXIT MSG: .ASCIZ /Hello, world!/ .END HELLO
  10. БАЗОВАЯ ИДЕЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ Компьютер 011001 
 110101 Машинные коды

    Компьютер Транслятор 011001 
 110101 Использование ЯП program coo l begi n ..... . end
  11. СПОСОБЫ ИСПОЛНЕНИЯ Программа (исходный код) 
 Исполняемый код 
 Программа

    (исходный код) 
 Компиляция Интерпретатор Пользователь Интерпретация Компилятор
  12. ВИРТУАЛЬНЫЕ МАШИНЫ Программа (исходный код) 
 Промежуточный (байт-) код 


    Компилятор Компиляция Пользователь Виртуальная 
 машина Интерпретация, 
 иногда компиляция
  13. ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ • Императивная. Программа – это и есть алгоритм.

    В каждый момент есть глобальное состояние (содержимое памяти), явно доступное для изменения. Языки: Pascal, C, … • Функциональная. Программа – это функция. Нет явного состояния. Языки: LISP, Haskell, Microsoft Excel (!). • Логическая. Программа – это набор предикатов и правил вывода. Языки: Prolog, SQL.
  14. ИМПЕРАТИВНЫЙ C int fact(int n) { int result = 1;

    for (int i = 2; i <= n; i++) { result *= i; } return result; }
  15. ЯЗЫКИ ВЫСОКОГО УРОВНЯ FORTRAN (1950-е гг. ) LISP (1950-е гг.

    ) Basic (1964 г. ) Pascal (1970 г. ) C (1972 г. ) C++ (1983 г. ) Delphi/Object Pascal (1986 г. ) Perl (1987 г. ) Python (1991 г. ) Java (1995 г. ) JavaScript (1995 г. ) PHP (1995 г. ) C# (2001 г. ) Visual Basic .NET (2001 г. ) Go (2009 г. ) Swift (2014 г. ) … #2 3 #35 #1 8 #21 9 # 1 # 4 #1 7 #1 9 # 3 # 2 # 7 # 8 # 5 # 6 #1 3 #1 5 …
  16. ЯЗЫК PYTHON • 1991 г., Гвидо ван Россум . •

    Упор на читаемость и простоту кода.
  17. ИСТОРИЯ PYTHON • Конец 1980-х — начало разработки расширяемого скриптового

    языка программирования . • 1991 — анонс в группе новостей . • 2000 — Python 2.0 (более менее современный вид) . • 2008 — Python 3.0 (текущая ветка развития) . • Апрель 2020 — окончание поддержки Python 2.0.
  18. ТЕНДЕНЦИИ • Языки программирования становятся все мощнее за счет усложнения

    абстракций (ср. кирпич vs. разборный дом) . • Тупые куски кремния не становятся умнее, но усложняются, поэтому «объяснять» им все сложнее . • Трансляторы становятся все сложнее . • Ожидания пользователей растут.
  19. WTF?! • Программист просто обязан постоянно учиться — новые технологии

    появляются ежедневно . • Есть базовые вещи (алгоритмы, структуры данных, …) . • Ими-то мы и займемся!