Блестящий курс лекций по программированию на языке Python, прочитанный для студентов МФТИ в 2020 году Тимофеем Хирьяновым.
11+... видео-лекций, ~1,5 часа каждая, снабжены подробными тайм-кодами.
Тайм-коды:
7:52 язык Python: "научный калькулятор", универсальный, интерпретируемый
11:22 Jupyter notebook / для работы с Питоном
12:14 интроспекция в Питоне (рефлексия, взгляд на самого себя)
13:10 интерактивный режим. Арифметические операции
16:26 установка Python 3 на компьютер: https://www.python.org/downloads/
17:38 возведение в степень (2 ** 10) в Питоне как операция, а не как функция
17:58 в Питоне для целых чисел реализована длинная арифметика
18:48 Переменная. Связывание (Присвоение) имени и значения (объекта число)
19:30 Тип переменной (type). class 'int' / целое число
19:47 dir (x) / все методы этого класса (что он может)
20:10 y = x / присвоение у значения х. x == y (True) / Операция Сравнения
20:30 логический тип / class 'bool'. Логические выражения
21:50 операция is
22:58 class 'float' / десятичное число, число с плавающей точкой
25:00 Вывод на экран / print(). class 'str' / строка. Символ - это тоже строка
26:05 дзен Питона - import this
27:45 Error / ошибка
28:01 Приведение типа. Преобразование типа. Смена типа у переменной х на int / int(x)
31:03 функция округления / round(114.9), ceil(124.1), floor()
31:40 Ввод, считывание с клавиатуры / input()
32:18 Создание питоновского файла: 01_input_print.py. Неинтерактивный режим: расширение - .py
33:25 русский язык в Питоне. Файлы хранятся в кодировке UTF-8. Неравномерная кодировка
34:29 print(f"str{x}") / форматирование строки
35:22 Запуск программы просто как файл. В пакетном режиме. Исполнение программы
36:07 не юзать переменные для вторичного использования
38:13 IDE: PyCharm, текстовые редакторы: notepad ++, Atom, GNU, IDLE, vim
40:27 Логическое ветвление. Каскадное ветвление и некаскадное
40:52 Алгоритм. Глобально исполнение идет инструкция за иструкцией. Последовательность выполнения
42:35 приоритет операций
45:40 именовать переменные не у, а со смыслом
46:41 Ветвление. Оператор if
47:15 оператор break для прерывания и выхода из конструкции
48:04 Цикл while. Бесконечный цикл
48:58 действие х -= 1 (то же самое, что и х = х-1 / декремент). х+=1 (инкремент). Операция присвоения нового, изменённого на 1 значения иксу.
51:15 деление нацело // с отбрасыванием остатка
53:14 Отступ в конструкциях - 4 пробела, TAB. После двоеточия
53:39 кодинг-стайл PEP8
1:00:32 Цикл for. генератор арифметической прогрессии
1:02:19 Итерируемый объект. функция range(start, stop, step)
1:08:05 input() делает из всего (введённого) строку. Чтобы сделать из него число, надо: int(input())
1:09:07 вложенное ветвление. if else
1:13:17 логические операции: and (и), or (или), not (не)(унарная)
1:20:06 elif каскадное ветвление
1:21:45 import turtle. Встроенная библиотека. Вызов методы у объекта - через точку
1:24:53 Python Docs. Library Reference
1:29:38 Функция. Чтобы действие можно было вызвать многократно. def x():
Тайм-коды: функции/def, tuple/кортеж, list/список, set/множество, dict/словарь
2:34 ход исполнения: 1) ветвящееся, 2) циклическое, 3) вызов функций. Связь команд с действиями
5:24 функция - разделение программного кода на кусочки (декомпозиция)
7:05 - структуры данных, - алгоритмы
8:54 Золотой фонд Python, т.е. в Питоне очень много всего встроено в стандартную библиотеку
9:44 Кортежи переменных. Присваивание и кортежи. Имена и объекты Ссылочная модель данных в Питоне
11:36 тип принадлежит объекту, а не имени
12:05 изменяемые и неизменяемые объекты
12:50 объекты в Питоне появляются в процессе вычисления
13:48 сборщик мусора удаляет объекты, на которые нет ссылок
15:51 имя переменной справа от знака = значит взять её значение
17:00 объекты типа int, bool и str являются неизменяемыми
21:03 трамвайное присваивание
21:50 ; в Питоне
23:00 кортежи в присваивании - множественное присваивание
23:51 не поставленные скобки
24:56 обмен переменных значениями. Присваивание через третью переменную
26:12 присваивание через 2 временные переменные. В Питоне обмен переменных значениями без временных переменных х, у = у, х
28:28 tuple /тип кортеж неизменяемый объект А = (1, 2, 3)
32:30 использование кортежа: распаковка - a, b, c, d, e = T
33:28 Индексы, Нумерование элементов. а = Т[0]
34:14 a, b, *rest = T
36:09 * - оператор распаковки элементов
39:39 именованные параметры функции print() - параметры, которые управляют самой распечаткой
40:06 "\n" экранируемый символ (new line)
41:10 кортеж может содержать неоднотипные значения
41:37 функция, описание. Аннотация типов
45:04 вызов функции
49:17 range() - генератор арифметических прогрессий
53:58 итерируемый объект
56:10 list /тип список изменяемый объект A = [1, 2, 3]. Элементы - ссылки. М.б. ссылкой на самого себя. Можно класть разнотипные данные
58:17 пробег циклом for по Списку Кортежей
58:59 hard code
1:00:25 len(A) / длина А
1:06:24 enumerate() / номерование
1:08:19 set / тип множества изменяемый объект. Элементы в них не упорядочены, нет индексов А = {1, 2, 3}
1:11:56 добавить элемент в список append()
1:12:58 добавить элемент в множество add()
1:15:09 dict / тип словарь(dictionary) изменяемый объект A = {'a':1, 'b':2, 'c':3} ключ : значение
1:16:36 в множество элемент входит однократно
1:18:20 добавить элемент в словарь
Тайм-коды:
2:22 блок-схема. Движение программного кода в императивных языках
9:28 return / то, что остается (возвращает) после выполнения функции
10:50 main / основной код
13:05 стек вызовов. Стек адресов возврата
17:00 нити исполнения. Асинхронность
21:36 интерливинг / чередование выполнения нитей
21:57 синхронный вызов = 1 нить исполнения timeline
23:40 Пространство имён. Ссылочная модель данных
25:19 Локальные имена. являются преимущественными. Каждый новый вызов порождает новое пространство имён
27:50 правило LEGB. G - Глобальные имена, B - built-in/Встроенные имена (стандартные имена самого языка программирования)
32:04 передача информации через параметры (внутрь функции). Получение информации через возвращаемое значение (из функции)
34:26 описание функции
35:35 NoneType / Ничего
38:15 аннотация / комментарий возвращаемого значения
41:45 интерфейс взаимодействия
42:04 передача параметров. Формальная переменная. Фактические параметры
45:04 в тот момент, когда функция вызвана, начинает существовать её пространство имён
45:29 список (или другой изменяемый объект) как параметр
51:38 аннотация типов входных параметров
52:19 контракт функции
53:14 Duck Typing
59:02 параметры по-умолчанию
1:00:29 код def function()
1:03:26 именованные параметры
1:06:07 значение по-умолчанию параметров
1:08:23 def bar(*args):
1:09:10 многострочная строка
1:15:13 сторонняя библиотека pygame
Тайм-коды: анализ кода, Стиль программирования PEP8, документация функций
7:10 Начало. Качество кода
10:26 читабельность /readability (легко понять) и поддерживаемость /supportability (легко исправлять и доделывать)
15:17 код с pygame
24:00 нужность указывать лицензию на github
27:52 PyCharm community иде-шка
30:47 рандомный программный код football_1.py
33:47 переменные с длинными именами
38:07 захардкоженные константы зло
40:31 анализ кода
43:21 поиск объекта в коде, когда объекту на картинке не дали имя
45:54 формальные нарушения. Линтеры могут автоматически корректировать программный код
46:43 Coding Style. PEP8 Style Guide
50:31 PEP257 (Docstring Conventions) Соглашение о документ-строках
51:17 отступы
52:12 PEP8 на русском
53:53 внешний вид, отступы
55:04 пробелы
55:13 максимальная длина строки (79 символов)
55:59 кодировка UTF-8. Символы идентификаторов - только ASCII
57:43 код по-русски, по-армянски, по-корейски
59:51 импорт
1:00:48 пробелы
1:01:34 другие рекомендации
1:02:52 комментарии
1:04:07 контроль версий
1:04:15 соглашение по именованию
1:06:05 Идентификаторы CamelStyle, snake_style
1:08:30 символ подчеркивания, магические методы
1:09:36 dir(1) его методы
1:11:06 глобальные переменные
1:13:14 степень инспекции в PyCharm
1:17:11 ограничение длины функции. Ограничение ответственности функции
1:18:20 выделение кода в функцию
1:23:00 рефакторинг (refactoring)
1:25:50 стайлификатор
1:26:13 документация функций. Документ-строка
1:30:33 help() помогает увидеть документ-строку
Тайм-коды:
0:57 Декомпозиция. Разбиение на части:
7:05 1) Рефакторинг - способ улучшения программного кода малыми порциями с сохранением его функциональности
8:13 декомпозиция - разбиение задачи на подзадачи
9:14 синтаксическое оформление декомпозиции: 1) функции, 2) объекты, 3) модули
12:30 2) Проектирование
14:18 Подход "Снизу-вверх": декомпозиция, когда мы выдираем уже готовый, состоявшийся код и оформляем его как функцию
14:35 Подход "Сверху-вниз", который идет от проектирования. Архитектура
14:45 Структурное программирование (автор - Э.В. Дейкстра, популяризатор - Н. Вирт
15:11 императивное (процедурное), функциональное, логическое программирование - разные языки и стили
18:48 проектирование "Сверху-вниз"
19:37 интерфейс взаимодействия. Интерфейс вызова функции
21:29 поломка программного кода
24:42 итеративная разработка
28:31 консистентное состояние. Программа регулярно находится в состоянии сборки, т.е. прога скомпилирована, может быть запущена и протестирована
31:13 Система контроля версий Git
46:55 mock функция
47:25 опорная точка
50:53 призрак - знания, которые не внесены в программу, но используются
51:10 документация интерфейса
53:56 сверху-вниз значит от использования функции к её реализации
54:44 код. Документация
58:57 Git
1:09:14 код
1:09:39 функция main()
1:19:10 иллюстрация
1:22:11 Git в PyCharm
Тайм-коды:
0:24 система контроля версий
4:25 diff утилита. Для отображения изменений
12:00 репозиторий. Слияние соединений в общий код (Merge)
12:17 reverse commit. Коммит-отмена
22:21 Распределенная система контроля версий. Git
26:18 bare (origin) repository. Центральный репозиторий
27:14 ручное слияние в случае конфликта версий
35:20 merge commit. Авто-слияние
36:50 команды Git: clone(склонировать), status(статус), diff (изменения), add(добавить),
42:20 commit(вклад), pull(подтянуть), push(запушить)
47:15 stash (спрятать), stash pop (достать)
50:53 head (голова ветки), rebase (на другую ветку)
52:22 fork (ответвиться), pull request (отправка на проверку)
52:46 Событийное или Событийно-ориентированное программирование - это про логику программы
54:57 иллюстрация программы с точки зрения времени её жизни и CPU
57:47 инициализация
58:03 Событие
59:49 Объект события (event). Очередь событий на обработку
1:03:15 непрерывный процесс
1:07:51 команды гита, код
1:09:28 Диспетчеризация, код пример
1:12:06 Обработчик событий. key_down_handler(event)
1:12:59 global глобальные переменные
1:13:58 команды гита, код
1:24:24 git for windows гит для винды
Тайм-коды:
1:09 Модули и пакеты. Пользовательские библиотеки
1:58 проблема, которую решает модульное программирование - уменьшение сложности программы за счет декомпозиции самих имён функции. Структурирование пространства имён, функций, объектов (классов), переменных. Создается иерархическая структура проекта
9:43 иллюстрация
14:02 декомпозиция общего кода на модули (отдельные файлы). Должна быть некая логика, по какому-то принципу
16:56 направленность зависимостей. Не должно быть циклического взаимодействия модулей друг с другом
19:53 когда разбивать на модули
23:17 Пакет модулей package
26:53 механизмы структурирования программного кода
28:20 отличие фреймворка от библиотеки (пакета модулей)
30:37 импорт import
41:00 пакеты
43:22 код пример
44:14 комплексные числа complex
45:16 если появляются несколько объектов с одинаковыми именами, то просто работает последний (только один), т.к. в Питоне нет перегрузки функций
48:40 if _name_ == "__main__": # чтобы модуль запускался не автоматически main()
51:57 взаимозависимости модулей между собой, менеджеры пакетов. В Питоне - pip
54:58 модуль - это файлик с функциями, которые можно импортировать
55:19 переменная name библиотеки и главного (main) модуля
1:00:28 Объекты и классы. Объект - это переменная классового типа
1:03:37 именование класса по PEP8
1:04:42 класс - коробочка для упаковывания функций и переменных (объединение кода и данных)
1:12:14 абстрактный класс. Классовое свойство. Классовый атрибут. Экземплярный атрибут
1:15:17 у объектов одного типа могут быть разные атрибуты
1:16:10 конструктор класса def __init__():
1:17:09 отличие классов от модулей
1:18:40 задача модульного программирования и ООП
Тайм-коды:
1:19 объекты и классы, зачем ООП
7:27 проблема, которую решает ООП (помощь в концентрации внимания): 1) ограничение области видимости (имён), 2) сужение задачи, 3) документация
10:50 3 парадигмы: функции (структурное п.), модули (модульное п.) и классы (ооп.)
14:05 постановка задачи
18:07 схема разграничения объектов и классов
20:33 объекты появляются в результате конструирования (вычисления), классы определяют конструирование
21:36 объект - экземпляр класса, он хранится по ссылке и с ним что-то можно делать, а с классом ничего нельзя делать
25:08 абстрактный объект
26:30 Моделирование задачи. UML Диаграмма классов (какие объекты связаны с какими, что они делают и какой у них смысл)
27:48 ассоциация классов
32:17 кратность ассоциации
34:50 неявные объекты, объект, который агрегирует в себе другие объекты
44:18 код пример класса Dragon
56:00 self -у каждого метода класса всегда первым свойством идет я (self)
58:24 создание экземпляра класса
1:00:56 _init_ метод инициализации
1:03:30 list в котором все экземпляры класса
1:08:13 код пример инкапсуляции класса PositiveInt
1:10:38 код Пушка
1:15:56 если в классе используется имя другого класса, то этот другой класс должен быть написан выше по коду
1:18:37 классовое свойство, к нему обращение не через self, а через название класса
1:19:17 модель более подробная с атрибутами и методами
1:23:35 наследование. код Pacman
Тайм-коды:
1:03 5 принципов создания классов: S.O.L.I.D.
4:36 принцип единственной ответственности классов
6:20 класс Пушка
8:48 иллюстрация на доске Пушка. Расширение функционала
11:03 несколько осей изменений не должны проходить через один класс
14:35 антипаттерн божественный объект GodObject. Шаблон проектирования программы
22:33 Иерархия
27:04 принцип подстановки Барбары Лисков
27:23 Подкласс (производный). Класс наследник. Надкласс (базовый)
30:37 Абстрактный класс
32:51 Ассоциация между классами
35:15 Наследование. Выстраивает иерархию типов
35:36 абстрактные методы
36:45 принцип инверсии зависимостей
40:24 принцип подстановки Барбары Лисков
48:33 код. Иерархия Hierarchy.py
50:03 явный вызов конструктора надкласса. Конструктор производного класса обязательно должен звать конструктор базового
53:37 метод super() - это функция, которая возвращает надкласс
57:38 gun.py
1:01:20 код
1:03:39 второй механизм в ООП как вести себя с множеством объектов
1:09:20 добавление в код иерархии
1:13:23 в конструкторе подкласса, при вызове super().__init__(), не нужно прописывать свойства конструктора надкласса, оно само
1:23:03 Агрегация. Класс-агрегат содержит в себе объекты других классов
Тайм-коды:
2:05 программирование в команде
2:19 одиночное программирование
7:27 парное программирование
16:50 Распределение ролей. Виды деятельности
21:16 Developer программисты
31:06 Quality Assurance тестировщики
40:53 git система контроля версий
43:03 gource прога для визуализации работы
47:23 документация работы тестировщиков. Система Bug tracker (Bugzilla)
49:04 bug, feature request (запрос на фичу), ticket
54:04 issue, ticket status: open, fixed, closed, invalid, resolved
1:01:01 Technical Writer технические писатели. Описывают и внутреннюю и внешнюю документацию в wiki
1:05:24 use case описывает интерфейсы компонент и пользовательский мануал
1:06:20 UI/UX дизайнеры интерфейса
1:10:09 Architect архитектор делает UML схему
1:14:53 совмещение ролей в маленькой команде
1:23:03 Ветки разработки в git (master, branch)
1:28:41 команды git merge слияние
1:33:48 git branch посмотреть ветки, создать ветку, git checkout вытянуть ветку
1:37:31 gitignore список того, что будет игнорироваться
1:38:52 -- set - upstream установить ветку, как вышестоящую. Создать удаленную, локальную ветку и запихнуть в удалённый репозиторий
1:40:18 принять, втянуть изменения
1:43:43 git branch -d -r удалить ветку
1:50:10 Взаимодействие через gitHub. Механизм pull request запрос о подтягивании
1:52:29 review проверка запроса. Merge pull request
2:00:18 Issues в gitHub встроенный bug tracker
2:04:52 идентификатор issue (#3)
2:05:15 reference ссылка в комментарии
2:06:31 комментарии к commit-ам
2:07:31 упоминание конкретного человека в комментарии
Тайм-коды:
0:54 проектирование крестики-нолики
1:09 постановка задачи. Предварительный анализ. Вычленение объектов и классов
13:31 контроллер game manager занимается динамикой игры, порождает происходящие процессы
18:09 виджет View отображает модель на экране
21:07 модель model: игровое поле, клетки, завершение игры
29:26 перечисляемый тип enum. Тип, значения которого вручную перечисляют
31:23 код crosszeroes.py
34:56 enum (enumerations)
38:00 class GameRoundManager менеджер игры, запускающий все процессы
38:16 def main_loop(self) главный цикл
40:15 какие классы выше должны быть, а какие ниже: если класс запускает какие-то другие классы, то они должны быть выше него описаны
41:18 нижнее подчеркивание перед названием - указание, что свойство является непубличным, внутренним в классе
45:22 class GameWindow содержит виджет поля, а также менеджера игрового раунда
53:21 def handle_click что происходит, когда игрок делает клик на поле
1:01:51 class GameFieldView виджет игрового поля
1:03:02 провязка ассоциации классов
1:09:26 очередь в pygame
1:17:41 class GameField ширина, высота, клетки поля
1:22:13 часы в pygame
1:24:47 добываем координаты
1:28:59 сравнительный анализ проделанной работы и плановой
Тайм-коды:
1:15 документация проекта
4:47 внутренняя документация отдельно от исходного кода
12:42 5 способов внедрения документации внутрь проекта:
13:35 0) самодокументирующийся код
25:22 1) комментарии # пишутся сверху, если не сбоку
30:22 2) документ- строки + аннотация типов
43:41 help функции с документ-строкой
44:55 PEP 257 документирование кода
45:49 PEP 258 Docutils стандартная утилита для автоматического создания отдельной документации из документ-строк
47:36 RST-разметка. Язык разметки
50:04 разметка markDown
51:05 3) assert механизм вставки проверяемых утверждений
1:02:51 assert не вычисляются в неотладочном режиме, а воспринимаются интерпретатором как комментарии (-O)
1:06:30 4) контрактное программирование. отказоустойчивое программирование
1:09:29 Бертран Мейер создатель языка Эйфель и проектирования по контракту или программирования по контракту
1:14:55 спецификация интерфейса должна быть: 1) формальная, 2) точная, 3) верифицируемая
1:24:20 библиотека PyContracts:
1:24:45 1)декоратор @contract(a='int, >0', returns='list[N]')
1:25:25 2) annotations
1:26:00 3) docstrings
1:26:30 https://andreacensi.github.io/contracts/ документация PyContracts documentation
1:26:45 pip install PyContracts для установки
Для не знакомых с языком, настоятельно рекомендую бесплатный курс Python для начинающих. Сам я прошел его с огромным удовольствием. Буквально, затягивает. Решаешь задачи с огромным интересом и желанием.
«Укус Питона» – «A Byte of Python» по-русски
Перевод популярной книги «A Byte of Python» на русский язык.
Автор книги – Swaroop Chitlur.
Автор русского перевода – Владимир Смоляр
К 12 лекции: Бертран Мейер "Почувствуй класс. Учимся программировать хорошо с объектами и контрактами".
Комментарии
На английском?
Вот замечаю, что появилось много статей, которые не имеют отношение к изначальной тематике сайта.
На русском. Для студентов МФТИ (Московского физико-технического института). Вы, хотя бы в содержание поста заглядывайте, перед тем, как комментировать.
Извиняюсь, не уточнил, я про ссылку для начинающих.
Да по русски там всё...
Ссылка для начинающих тоже, разумеется. на русском. Я ее активно предлагаю знакомым школьникам.
Заметка в Блогах, не на Пульсе, замечу, где сказано:
Немного об этом разделе:
Внимание! Раздел "Блоги" содержит все материалы, поступившие на ресурс, с *минимальным* вовлечением редакторов (чистка спама / криминала). Поэтому, если Вы читаете Блоги, не жалуйтесь, если какие-то материалы покажутся Вам сомнительными - Вы сами выбрали Блоги.
мы уж как-ить по старинке ... больше лет 20-ть верны только Perl !!
Понимаю. Старость не радость.
А предыдущее поколение, небось. хранило верность счётам, с негодованием отвергая новомодные калькуляторы.
до персоналок в шаговой доступности были EC 1022 и 1033 и несколько СМ...
не угадал
С картинками аккуратнее надо. Я счеты специально сделал поменьше.
Свою первую программу я написал в 1974 году школьником для вот такого "суперкомпьютера".
Пр'оминь
Причем, что характерно, ее реально использовали в научной работе. Аппроксимация функций по методу наименьших квадратов.
Старшие товарищи (с) утверждают, что вся советская лунная программа (траектории полета) рассчитана на СМ-2М.
Старшие товарищи (с) не в курсе, что Агрегатная система средств вычислительной техники (АСВТ) разрабатывалась в 1970—1974 годах, а производство ряда машин — СМ ЭВМ, (СМ 1, СМ 2, СМ-1210 как развитие линии АСВТ-М) было организовано в соответствие с постановлением правительства от 1974 года?
Внимание, вопрос: Советская лунная программа - даты?
Начальником у меня в давние годы был бывший сотрудник п/я в Приозёрске, няп, они писали на ассемблере для ЕС ЭВМ.
Спасибо!
Утащил в закладки
А на c# есть? Питон как язык - программная платформа так себе. Непрофессиональный интерпретатор.
К сишарп Тимофей резко отрицательно. У него есть обширный курс по С++.
Или Вы чего-то не понимаете.
Я немножко понимаю в языках, если что. Даже компиляторы писал.
C++ активно используется для производства софта, также программирование ардуина на нем неплохо идёт.
C# -- также удобен для производства софта, имеет обширные библиотеки по функциям использования. Плюс например юнити.
По питону сколько не искал -- использование на уровне программного калькулятора. Что на нём можно делать, помимо небольшой логической лаборатории?
Возможно я чего-то незнаю, былобы итересно.
На ссылке на приложение, учебная база по обучению на версии c# довольно слабая программа обучения. Безсисимная и неудобная.
Питор и Перл это средства малой механизации, не для производства софта.
В принципе такое впечатление и сложилось: минилаборатория для промежуточных прикидок для вместоинженера.
Если инструмент называют "удобным средством прототипирования", то это означает, это язык более высокого уровня, но для него просто еще не сделали хорошего компилятора :)
Вы, вероятно, не в теме. На питоне огромное количество софта и библиотек.
Там нет проблемы эффективности. Критические участки легко переписываются на си. Там хорошая интеграция с си.
Везде огромное количество софта и библиотек. А вот питон никто не будет ставить на рабочие места пользователей.
Именно не в теме, поэтому чтоб вникать глубже, интересуюсь: что работает на питоне? Конкретно и результативно?(если можно, то со ссылкой)
(Помимо этой имитации программирования, что описывается во всех мной встречаемых уроках)
В меня на питоне работает несколько скриптов, типа вытащить данные из базы, подписать эцп, отправить по почте, долждаться ответа, и т.д. Абcолютно никаких преимуществ перед джавой не вижу, ну разве исходник компактней и легче читается.
Спасибо, понял.
Хотя по прежнему невижу необходимости изучения этот часто рекламируемый язык.
Этот пост я поместил не с целью пропаганды языка, а как удобное оформление для себя всего курса лекций. Чтоб таймкоды непосредственно рядом с видео.
формально - питон это бейсик 21 века
но к нему написано столько библиотек - что сделать можно даже монстра
правда монстр будет НУ ОЧЕНЬ не торопливым
поэтому питон используется правильно - или для маленьких программ или для прототипирования
в этом случае - он имба
так же как вилкой неудобно есть суп - так же ложкой неудобно есть макароны
ну а в целом неспроста на нынешнем индексе тиобе на вершине два языка - си и питон
потеснили яву на 3 е место
Значит, для него (Питона) напрашивается, как проект, качественный интеллектуальный компилятор.
это есть
но не в этом сила брат (с)
Есть cython - это попытка соединить питона с си.
Есть pypy. Тоже неплохой прирост.
Но зачем оно нужно, если можно взять numpy и получить lapack/cblas в удобной упаковке)
Вас какая область интересует?)
Прототипирование работает почти везде на python. На большую нагрузку никто не ставит, но у 95% этой проблемы и нет)
Физикоподобная лаборатория с иллюстрацией процесса. Пока наиболее близко юнити показал(хотя вроде как игровая платформа).
Питон намного проще, но на нём ничего сделать невозможно. Уроков рекламируется много, но что дальше с ним делать абсолютно непонятно.
Не совсем понятно что вы хотите сделать)
Если 3д сцены отрисовывать, то unity, действительно лучший выбор)
Под python есть большое число библиотек, которые написаны на c++, имеют хорошие доки и большое сообщество.
numpy - математика, матрицы
scipy - тоже вычисления, статистика, в том числе и разреженные матрицы , решение линейных уравнений.
tensorflow - работа с нейронками, а также возможность ленивых вычислений.
Pytorch, keras похожи на tensorflow.
Могут работать с cuda из коробки
Django, flask - web приложения.
Pyspark - поддержка spark'ом кода на python. Распределенные вычисления.
Numba - оптимизация кода, и компиляция оного.
Sklearn - machine-learning библиотека.
Pandas - работа с табличными данными.
Geopandas - работа с геоданными.
Можно писать короткие программы. А по скорости могут быть близки к cpp.
если вы по прежнему пользуетесь дотнетом - то скоро вам по голове стукнут грабли
я люблю вин32 - хорошая штука - но грабли по голове уже стукнули
причем сильно
видимо Вы не сталкивались с необходимостью применения этих языков...
чем будете парсить логи ну если не в миллионы строк , то хотя бы пару сотен тысяч строк...
и в данном случае что перл, что питон дадут огромную фору всему остальному...
Учитесь пользоваться кнопкой "ответить". Иначе Ваш ответ может не дойти до получателя.
Спасибо за информацию. Утащил себе в закладки.
Иногда встаёт дилемма, что лучше начать изучать и почему Python, а не Java?
Питон говорят очень популярен у всяких физиков как продвинутый калькулятор.
Это тоже, разумеется. Но он обладает огромными выразительными возможностями. Я бы его в плане выразительности сравнил с Лиспом. Но в Питоне, к тому же, имеется полноценное ООП, он гораздо компактнее синтаксически, имеет метаязыковые возможности (т е. на нем можно штатно делать обработку и генерацию программного кода).
Думаю, рост его популярности - это совсем не дань конъюнктуре, а следствие реальных достоинств.
для питона сделали много математики типа Numpy
она вполне на уровне матлабов и подобных спец инструментов
ява это только если вы уверены что пойдете по пути профессионального программирования
питон - достаточный уровень для программирующего специалиста ( а щас такие все должны быть)
ява для такого типа людей - избыточна сложна
Можете изучать scala или kotlyn)
Scala много беднее в поддержке, но использует jvm. Там есть строгая типизация, но код более компактный, чем в java.
Учить нужно алгоритмы)
Хотя все зависит от целей.
Спасибо
Перспективный чат детектед! Сим повелеваю - внести запись в реестр самых обсуждаемых за последние 4 часа.
На Питоне удобно писать портируемое ПО.
Питон открыт в отличии от Явы.
Яву НИКОГДА не пропустят сертифицирующие органы, а на Питон даже ФСБ смотрит благосклонно.
А openjdk закрыта?)
https://libericajdk.ru/announcements/2019/12/03/CryptoPro/
Сертификат читали? Это не для гостайны.
Страницы