Блог им. WLMike

Начал изучать Python

Прочитал книжку Think Python: How to Think Like a Computer Scientist — очень понравилась: вместо сухого изложения с самого начала рассматриваются маленькие программы, которые в последующих главах дорабатываются с учетом более продвинутых концепций языка. Почти в каждой главе даются подходы, которые применяются при разработке и отладке больших по объёму программ. Даны основы data science — быстродействие различных структур данных, как организована их работа под капотом и т.д.

До прочтения написал программу строк на 200 про отслеживание диеты, которая представляла мало понятный кусок кода. После прочтения книги переписал в 100 строк.

Автор понравился, поэтому на очереди Think Complexity: Complexity Science and Computational Modeling. По планам к январю хочу поднабраться знаний и приступить к автоматизации торговой системы на  Python.

★10
12 комментариев
Ну, и как, по мнению автора питон помогает думать как «computer scientist»? Ведь он именно то задекларировал?
До прочтения написал программу строк на 200 про отслеживание диеты, которая представляла мало понятный кусок кода. После прочтения книги переписал в 100 строк.

А это ведь не показатель. Зачастую модульность наоборот требует больше кода, из-за необходимости декомпозиции.

Вообще, если нравится лаконичность, взгляните сюда:
iolanguage.org/

Практически любую программу на питоне можно сократить раза в 2 минимум:)

Вот пример с википедии

[code]
from abc import ABCMeta, abstractmethod

class Observer(metaclass=ABCMeta):
    """
    Абстрактный наблюдатель
    """

    @abstractmethod
    def update(self, message: str) -> None:
        """
        Получение нового сообщения
        """
        pass

class Observable(metaclass=ABCMeta):
    """
    Абстрактный наблюдаемый
    """

    def __init__(self) -> None:
        """
        Constructor.
        """
        self.observers = []     # инициализация списка наблюдателей

    def register(self, observer: Observer) -> None:
        """
        Регистрация нового наблюдателя на подписку
        """
        self.observers.append(observer)

    def notify_observers(self, message: str) -> None:
        """
        Передача сообщения всем наблюдателям, подписанным на события
        данного объекта наблюдаемого класса
        """
        for observer in self.observers:
            observer.update(message)

class Newspaper(Observable):
    """
    Газета, за новостями в которой следят тысячи людей
    """

    def add_news(self, news: str) -> None:
        """
        Выпуск очередной новости
        """
        self.notify_observers(news)

class Citizen(Observer):
    """
    Обычный гражданин, который любит читнуть с утра любимую газетку
    """

    def __init__(self, name: str) -> None:
        """
        Constructor.

        :param name: имя гражданина, чтоб не спутать его с кем-то другим
        """
        self.name = name

    def update(self, message: str) -> None:
        """
        Получение очередной новости
        """
        print('{} узнал следующее: {}'.format(self.name, message))

if __name__ == '__main__':
    newspaper = Newspaper()                 # создаем небольшую газету
    newspaper.register(Citizen('Иван'))     # добавляем двух человек, которые
    newspaper.register(Citizen('Василий'))  # ... ее регулярно выписывают
    # ... и вбрасываем очередную газетную утку
    newspaper.add_news('Наблюдатель - поведенческий шаблон проектирования')

'''
Иван узнал следующее: Наблюдатель - поведенческий шаблон проектирования
Василий узнал следующее: Наблюдатель - поведенческий шаблон проектирования

[/code]

[code]
Observer := Object clone

Observable := List clone do(
   register := getSlot("push")
   notify := method(message, self foreach(observer, observer update(message)))
)
Newspaper := Observable clone do( addNews := method(news, notify(news)))

Citizen := Observer clone do(
   create := method(name, self clone lexicalDo(name := name))
   update := method(message, writeln( name .. " узнал следующее: " .. message))
)

newspaper := Newspaper clone

newspaper do(
   register(Citizen create("Иван"))
   register(Citizen create("Василий"))
   addNews("Наблюдатель - поведенческий шаблон проектирования")
)

#>>>> Иван узнал следующее: Наблюдатель - поведенческий шаблон проектирования
#>>>> Василий узнал следующее: Наблюдатель - поведенческий шаблон проектирования

[/code]
avatar

sortarray sortarray, python как-то особо не помогает думать как computer scientist. Скорее книга о том, как стоит подходить к написанию программ, на примере питона, что на самом деле стоит за некоторыми языковыми конструкциями. Книжка начального уровня и не претендует на какое-то всеобъемлющее изложение, но мне она понравилась своим подходом и позволила переписать маленькую программу более кратко и самое главное более понятно.

avatar
А конечная цель какая? Стать data scientist или роботы? Или для души? Спрашиваю потому, что тоже учил, но в РФ куча всего на си Шарп.
avatar
shprots, у меня есть неспешная инвестиционная стратегия на базе Excel, которая по существу сводится к статанализу данных. Хочу, отчасти для души, переписать ее на Питоне и автоматизировать загрузку части данных. Нет задачи автоматизировать торговлю. Стратегия даёт сигналы на несколько процентов перетряхнуть портфель раз в месяц — это не сложно и руками сделать. 
avatar
знания должны быть бесплатны (ENG):
https://rutracker.org/forum/viewtopic.php?t=5340980
avatar
vito2000, не уверен. У авторов снижается мотивация чего-либо публиковать. Предпочитаю на Амазоне покупать. 
avatar
Андрей Андреичъ, не знаю — читаю преимущественно на английском. 
avatar
Михаил, торговля на Питоне никакая. Нет стабильности в их библиотеках, и нет ничего готового.

А вот крутить вертеть графики и отчеты одно удовольствие.
avatar
Евгений, мне для статобработки данных — торговать буду руками. 
avatar
Евгений, есть виртуальное окружение. кто мешает его использовать? Торговля на питоне вполне возможна, хотя тут больше зависит от брокера. Писать связки питон + C# можно, но это геморно да и зачастую просто смысла лишено. 
avatar
питон лучший язык для начала изучения программироания, на западе это давно стандарт дефакто для обучения студентов. так же это фактический стандарт, для датсайнса, нейросеток и кучи другого ресеча. естественно микросекунды на нем не повертишь, но написать коннектор на C/C++ к нему много мозгов не надо. про стабильность выше вобще какую-то чушь написали, к языку программирования она никакого отношения не имеет, у вас что интерпретатор питона падает, лол?
avatar

теги блога Михаил

....все тэги



UPDONW
Новый дизайн