• Зачем нужно ООП?

    Jump
    @Jump
    Системный администратор со стажем.
    Я пока такой необходимости не встретила
    Все зависит от задач.
    Если я пишу в основном небольшие приложения, и не работаю в команде - мне ООП как бы нафиг не нужен.
    Но если код будет объемный и сопровождать его будет множество людей - без ООП это просто нереально.
    Ответ написан
    2 комментария
  • Зачем нужно ООП?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Раньше программа могла быть написана одним сплошным листингом. Но при попытке сделать изменения, оказалось что очень сложно понять все зависимости внутри программы, как только ее размер превышает некоторый критический уровень.
    Появилась мода на модульность.
    Но программы стали сложнее, и уже модуль перестал помещаться в мозг одного человека, чтобы можно было его быстро править.
    В процессе различных подходов, был придуман ООП-подход, суть которого заключается в следующем:

    Раз все программы оперируют некоторыми данными, то нужно взять эти данные, взять функции (методы), которые работают с этими данными и поместить в один объект.
    Если нужно будет изменить тип данных, добавить/отнять/поделить функционал, то программист будет работать с одним этим объектом. При этом, если разные объекты запрашивают что-либо друг у друга, то в ООП довольно легко сделать версионность и обратную совместимость.

    Ну а все остальное (наследование, полиморфизм и так далее) это уже возникло как следствие того, что ООП не решает все проблемы. Другой, более удобной глобальной парадигмы для сложных программ пока нет, вот ООП и занял свою нишу.

    Программы поменьше, особенно те, которые могут быть написаны одним человеком, могут писаться как угодно, но чем больше программа, тем сложнее ее поддерживать, а ООП - один из самых доступных методов "поделить" программу на независимые инкапсулированные кусочки.
    Ответ написан
    Комментировать
  • Могу ли я отказаться от авторства и отдать свой проект в общественное достояние?

    tareid
    @tareid
    Отказываться от прав не спешите, отказаться от сотрудничества нужно громко, заслужите ещё большее доверие потребителей, ну и пиар, со всеми вытекающими. Изучите опыт Telegram, Дуров из подобного предложения сумел извлечь выгоду.
    Ответ написан
    9 комментариев
  • Существует ли курс/статья/книга где приведен полый алгоритм освоения машинного обучения?

    @Alibaba2018
    1. Базовый курс по Питону (Если никогда в жизни вообще не программировали начинайте с Learn Python the Hard Way -> Python Crash Course by Eric Matthes -> Automate Everything -> John Zelle "Python Programming"
    (обязательно(!) делать все упражнения - набивать руку, т.к. только материал будет действительно осваиваться)
    (если же уже есть опыт в программировании: Allen Downey - Think Python, Diving into Python и Learning Python (Lutz))
    1A: Обязательно нужно знать алгоритмы чтобы вообще понимать что такое более-менее профессиональное программирование: Самая лучшая и детальная книга по алгоритмам на Питоне имхо: "Data Structures and Algorithms in Python" by Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser
    1Б: на yotube есть канал Lucid Programming, где автор тоже показывает очень много алгоритмов на примерах
    2. потом изучать хорошо матан(single variable calculus + multi variable calculus)/линал/статистику и probability: на уровне понимания концептов (можно учить по Khan Academy или Udemy, где я брал классы по Calculus от Krista King, мне понравилось как она обьясняет)
    Есть неплохие видео от Imperial College of London по математике:
    Mathematics for Machine Learning full Course || Linear Algebra || Part-1 https://youtu.be/T3TpdPmTLso
    Mathematics for Machine Learning Full Course || Multivariate Calculus || Part -2 - https://youtu.be/m998PdOCFcY
    3. Далее бесплатный курс по ML от Andrew Ng на YouTube и Courser'a - бесплатно
    3.А Также очень детальный курс по математике от создателей DS для R: An Introduction to Statistical Learning - University of Southern California - доступна бесплатно - где вся подноготная математики показывается очень детально
    4. Hands-on machine learning with scikit-learn and tensorflow - o'reilly - куча практики и теории
    5. Python for Finance - O'Reilly - вообще у O'Reilly по Python очень неплохие книжки по питону и МО, где можно много чего увидеть in action
    6. куча курсов за $10 на Udemy от Jose Portilla (в том числе R, SQL, Spark with Python, Spark with Scala, Computer Vision, NLP, Plotly, Algorithms, Python for Finance, Deep Learning: TensorFlow, Keras итд итд итп,) - если будте брать на udemy курсы и показывает больше чем $10, напишите коммент - дам промо код по кот. скидка 94% - код дается уже купившим его курсы)
    7. очень крутой канал на YouTube у Siraj Raval по Data Science - куча примеров, видео, инфы итд итп (найдите там видео как выучить Data Science in 3 months, там тоже очень много ресурсов, но имхо за 3 месяца, как он говорит, нереально)
    8. "data science from scratch by joel grus" старая книжка тоже от O'Reilly
    на самом деле, я бы советовал начинать с неё, даже если нет вообще никакого опыта и вообще ничего не понятно, т.к. она дает весь план что нужно учить и как организовать себе весь процесс (и потом периодически к ней возвращаться, сверять с планом)
    Также очень похожая есть книга Python for Data Analysis Book by Wes McKinney (создатель pandas), но чуть-чуть попроще, и я бы все равно советовал их вместе обе прочитать, т.к. эта намного больше концентрируется на data cleaning'e

    Вообще, Data Science на самом деле очень не сложная дисциплина по сути, просто действительно нужно много знать для того чтобы там реально начать что то делать, т.е. большой порог для вступления, но сами алгоритмы очень и очень легкие и писать, и работать с ними итд итп. Более сложнее готовить дату, моделировать, как то пытаться к ней поступиться, чтобы начать работать, а сам процесс и код на питоне проще простого.

    Ну и как Вам написали выше, как освоите всё вышесказанное (хахаха), welcome после этого всего на kaggle, чтобы начать уже делать это всё на практике;)
    Ответ написан
    Комментировать
  • Что предпочтительнее: наследование или обёртка?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Парсер в данном случае просто интерфейс. Поскольку Python - язык с динамической типизацией, то наследование или обертки не требуются вовсе. Просто все конкретные парсеры должны реализовать подразумеваемый интерфейс:
    class CsvParser:
        def parse(self, file_name):
    
    class XlsParser:
        def parse(self, file_name);


    Экземпляры конкретных парсеров, по мере их появления складываем в обычный словарь, где ключ - это расширение файла, под которое заточен парсер.

    { 'csv': CsvParser(), 'xls': XlsParser(), 'xml': XmlParser() }


    В конечном итоге можно реализовать поставщик парсеров, который будет выбирать подходящий парсер из вышеозначенного словаря, используя расширение имени файла:

    class ParserProvider:
            def provide(file_name):
    Ответ написан
    Комментировать
  • Как в Python 3 получить изображения с web-камеры?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Можно использовать модуль opencv

    import cv2
    
    # Включаем первую камеру
    cap = cv2.VideoCapture(0)
    
    # "Прогреваем" камеру, чтобы снимок не был тёмным
    for i in range(30):
        cap.read()
    
    # Делаем снимок    
    ret, frame = cap.read()
    
    # Записываем в файл
    cv2.imwrite('cam.png', frame)   
    
    # Отключаем камеру
    cap.release()
    Ответ написан
    9 комментариев