Михаил
Михаил личный блог
25 ноября 2017, 14:41

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

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

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

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

12 Комментариев
  • sortarray sortarray
    25 ноября 2017, 15:16
    Ну, и как, по мнению автора питон помогает думать как «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]
  • shprots
    25 ноября 2017, 15:16
    А конечная цель какая? Стать data scientist или роботы? Или для души? Спрашиваю потому, что тоже учил, но в РФ куча всего на си Шарп.
  • vito2000
    25 ноября 2017, 15:39
    знания должны быть бесплатны (ENG):
    https://rutracker.org/forum/viewtopic.php?t=5340980
    • Евгений
      25 ноября 2017, 16:44
      Михаил, торговля на Питоне никакая. Нет стабильности в их библиотеках, и нет ничего готового.

      А вот крутить вертеть графики и отчеты одно удовольствие.
      • day0markets.ru
        27 ноября 2017, 13:38
        Евгений, есть виртуальное окружение. кто мешает его использовать? Торговля на питоне вполне возможна, хотя тут больше зависит от брокера. Писать связки питон + C# можно, но это геморно да и зачастую просто смысла лишено. 
  • vlad1024
    26 ноября 2017, 10:58
    питон лучший язык для начала изучения программироания, на западе это давно стандарт дефакто для обучения студентов. так же это фактический стандарт, для датсайнса, нейросеток и кучи другого ресеча. естественно микросекунды на нем не повертишь, но написать коннектор на C/C++ к нему много мозгов не надо. про стабильность выше вобще какую-то чушь написали, к языку программирования она никакого отношения не имеет, у вас что интерпретатор питона падает, лол?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн