Pull to refresh
8
0
Ярослав Никитенко @ynikitenko

Пользователь

Send message

Анализ данных в Питоне - это далеко не только pandas. Лично я ей не пользуюсь.
Согласен, что ФП гораздо ближе к анализу данных, чем ООП. Хотя объекты со многими атрибутами удобны для объединения данных (собственно, точка - это когда 3 числа, а не 3 элемента разных векторов).
Питон просто очень удобный и гибкий язык. ФП и ООП, а также обычное императивное программирование (да, есть языки, где с ним сложновато) в нём представлены.
Я ранее писал про свой фреймворк для анализа данных на Питоне, если интересно: https://habr.com/ru/post/490518/ Он использует ленивые вычисления, может работать в PyPy (в этом смысле оптимизирован) и более высокоуровневый, чем С++ (но если нужна не гибкость, а скорость, то я пишу на С++ также).

Да, видел также про этот софт. А там можно синхронизировать несколько репозиториев одновременно, как в mr? И ещё интересно, при перещении файлов он заново всё копирует?

20 апреля (правда, без обозначения часового пояса) был дедлайн для подачи текста на конкурс. Я написал и опубликовал статью чуть раньше 0:00 по Москве, однако после дописал последние две секции (альтернативы и итоговые замечания), а также один абзац в разделе "безопасность" (про шифрование). Если это запрещено, то просьба рассматривать статью без этого текста)

Также извиняюсь перед читателями, что мне не удалось сделать оглавление. Возможно, это связано с новым редактором, но возможно, кто-то мне в этом здесь поможет. Если есть другие замечания по оформлению (весь встроенный код я оформлял италиком вместо обратных кавычек), то я тоже буду благодарен за них (правда, сейчас заменить звёздочки на обратные кавычки даже в одном месте у меня не получилось).

"Атаки ориентированы на эксплуатацию RPS (подтверждено)" - поясните, пожалуйста. В статье не полностью разобрался.

Это пересказ другими словами понятия макдональдизации. Интересный эффект, изучал его социолог Ритцер на основе теории «формальной рациональности» Вебера. Смысл в том, что полная рациональность иррациональна (https://ru.wikipedia.org/wiki/Макдональдизация — лучше написано, но, как я понимаю, здесь не приняты большие цитаты).
Поделюсь своим опытом, который сильно отличается от автора.
«Освоив всего четыре сотни самых распространенных слов, вы станете понимать 60-70% источников на общие темы» — я думаю, что не слишком важно, как вы освоите 400 слов. Это вообще мелочь по сравнению с тем, сколько ждёт впереди. Но да, после базового уровня будет гораздо проще.
Мне нравилось и было интересно, как меня учили английскому и другим языкам. Мне вообще было интересно учиться. Я, наверное, в хороших школах был. В Мытищах я учился в гимназическом классе. До этого в деревне в Воронежской области учил французский, в самых младших классах и самое простое — но мне это нравилось. В немецком есть слово lesen — это читать и «собирать картошку», собирать по крупицам. Так и идёт процесс обучения, по маленьким крупицам. Просто не надо ожидать, что я сегодня поучил, и смогу понять фильм или художественную книгу!
Из ошибок — могу сказать, что уровень учебника должен не сильно превышать ваш уровень (либо, если это сложный учебник — то с преподавателем будет гораздо проще). Я в детстве услышал, что знать иностранные языки — это очень хорошо, и (точно до пятого класса, а может и сильно раньше), взялся учить немецкий по взрослому самоучителю. Помню только замусоленную первую страницу, изобилующую материалом, все остальные остались белые. Из детской книжки помню чуть больше, даже считалки до сих пор помню!
Вообще, как я сейчас учу программирование или другие новые темы: полезны вводные материалы, если вы ничего не знаете. Я прочитал довольно примитивную книжку по С++ страниц на 200, потом много пользовался им (как Си, но зная про некие классы и виртуалы — ну для кругозора), и только потом уже прочитал 600-страничного Страуструпа (создатель языка), и гораздо больше понял и про язык, и дизайн, и более сложные вещи.
Что касается английского — я начал учить его только в 6м классе, и потом поехал с родственниками в Италию. В самолёте и в отеле я до сих пор помню пару фраз, которыми обменялись с иностранцами. Помню, что я долго думал над словами. «А ю… нацист?» спросил я у портье в Милане, когда он сделал комментарий по поводу японки. Вообще чтобы говорить — не важно, с кем вы говорите. Особенно если вы совсем плохо говорите. Любая практика — полезна. Я помню, когда шёл в школу и думал по-английски, и считал по-английски про себя (уже ближе к старшим классам).
После 9-10 класса (не помню уже), меня отправили на неделю на Мальту. Это был отличный языковой опыт! Я почти начал говорить за это время, если бы было 2 недели, то было бы великолепно (но у родственников не было денег на меня на 2 недели). И да, они мне нанимали репетиторов, и я помню их, и помню и песни, которые мы учили, и названия змей, которые мне показывали в книжке.
Поэтому я бы не отрицал те или иные способы обучения. Думаю, зависит от человека и от преподавателя.
Что касается старых языков — мы на французском (правда, я ходил на поэтический кружок) читали ballade de pendus, 15 века. Она мне очень нравилась! Моя подруга из Франции потом говорила, что у меня средневековый французский. Ну и что? Мне гораздо больше интересны классические красивые тексты, чем современные сериалы и фильмы. Не хочу никого отвращать — учите так, как вам нравится, без стереотипов и советов.
Лучше всего я знаю английский, потому что регулярно им пользуюсь, и давно. Читаю книги, статьи. Книги по программированию я начал понимать очень давно, прямо очень. А художественные — только недавно (то есть разница лет 10-15). Художественные сложные. Ищите писателей, которые интересны, и слова, которые они используют, не слишком превышают ваш лексикон (точно сейчас не помню, но 2 новых слова на страницу — маловато, а штук 10 — хороший баланс между приятно и полезно). Моей первой большой книгой на английском, и даже циклом книг, был Ведьмак Сапковского (да, я читал в переводе с польского, но переводчики были хорошие, язык был очень богатый и красивый). И Сапковский прекрасный писатель. И книга очень интересная. Не уверен, что я стал бы читать на русском — я до этого фэнтези не читал и не интересовался. На английском же это был хороший баланс между увлекательностью и полезностью (не загружаешься слишком глубокой философией вроде Преступления и Наказания, но и не совсем тупое и несвязное). Ещё у Сапковского отлично то, что у него целый мир, там есть и маги, которые говорят на очень высокопарном чистом языке, и простые гномы, которые ругаются на неповторимом жаргоне со сниженной лексикой. Хотя книг было штук 10, в конце так же было много новых слов (но плюс одного писателя и одной темы в том, что использованные слова потом иногда повторяются). Так что мне нравится читать на английском и учить слова. Если я вдруг встречаю новое слово в какой-нибудь статье по программированию или комментарии, то даже радуюсь.
Со школы слушаю музыку на английском (не только, конечно). Иногда перевожу, запоминаю песни.
Как и с книгами по программированию — в общении по работе у меня не возникает никаких сложностей. Но, к сожалению, полностью фильмы на английском я пока не понимаю. Думаю, что если я поеду туда, то быстро научусь (когда понадобится).
Повторюсь, что фильмы и сериалы я не люблю и почти не смотрю. Не очень интересно, и слишком пассивно (иногда интересно). Однако я прошёл 3 части Ведьмака. В этой игре, кстати, великолепная озвучка. Сначала я начал играть на русском, но потом решил, что будет полезнее на английском, и так дальше и играл. После того как я прошёл 3го Ведьмака (после середины я наконец даже отключил субтитры — в начале тётенька с шотландским акцентом и сковородкой сильно напугала) — я услышал много новых слов даже в песнях, которые очень давно слушал! И начал больше понимать. 1,5 года назад (или 2,5) на Новый год я посмотрел весь первый сезон Секретных Материалов — и мне кажется, что после Ведьмака (когда все эти фразы и даже детали очень важны для понимания обстановки и дальнейших собственных действий) — после игры я начал понимать гораздо лучше. Ещё я Hellblade (Senua's sacrifice) прошёл — игра красивая и очень впечатлила, и язык, кажется, там довольно простой. Подкасты я не слушаю ни на русском, ни на английском, просто не удобно и не люблю (но как-то было настроение в спортзале слушать их, так что не отрицаю, конечно). В общем, do as you like, and I wish you luck!

Да, вполне возможно. Я только на своём компе играл один. Мне кажется, хороший дизайн это когда и в первое прохождение можно не умирать пять раз от одного босса)

Спасибо. Diablo очень атмосферная и культовая игра, которая вдохновила очень многих (в том числе создателей Ведьмака).
Больших отличий между первой и второй частями я н увидел, кроме размера. Писали, что Diablo 2 — это то, что решили убрать из первой части и доделать. Или это городская легенда? В статье ничего нет про это.
Мне первая часть больше понравилась (в том числе по атмосфере). Решение во второй части "ты выиграл, если три раза прошёл одно и то же" — кажется диким и скучным. И механика "тебя пять раз убьют, пока ты одолеешь Ваала некромантом" — тоже так себе.
Таскать лут и продавать — тоже какая-то рутина. В Ведьмаке это лучше сделали (хотя он, конечно, был позже).

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

Thanks for the post. The idea of many small steps is known and is in the core of functional programming. I have several questions though.
1) In the Atomic steps section you give an example, when «the data will only be partially transformed, and further pipeline steps will have no way of knowing that. At the end of the pipe, you’ll only get partial data. » — mv doesn't help in this case, because it doesn't know whether the tmp file is complete or not. I think atomicity is something different, and difficult if you accept any series of data (5 or 500 comments are both fine) and your scripts are really independent (don't know about each other).
2) Is your whole pipeline really a set of scripts and mv, ln? Why don't you do that completely in Python?
3) «does help to identify their applicability limits, and to step over them if necessary.» — why don't you expand on that? :)
Какой хороший язык АЛГОЛ-60, до сих пор код исключительно понятен)
И документацию тогда умели писать не хуже, чем сейчас (а во многом лучше).
А исходник — это Приложение к чему?
Я думал ещё над вашим вопросом. Я думаю, что Lena как раз очень поможет в таком анализе. Программы в любом случае придётся писать, и насколько они соответствуют физическим процессам — это полностью зависит от того, как вы их напишете.
Что касается Lena — если вам нужно использовать данные из кучи файлов, то контекст как раз сводит эти данные воедино. Это очень удобно, иначе пришлось бы вручную всё это сводить, это тяжело и не продуктивно.
Да, у меня здесь pull модель, и она основная. Но для распараллеливания анализа — именно push модель.
Спасибо!
1) спасибо, вы правы, closure именно это, я перепутал. Я думал о сохранении значения внутри функции, чтобы можно было её возобновить после остановки. Это больше к reentrant.
3) да, я именно решил использовать push модель. Я не думал в терминах fork, для меня она больше относится к процессам.
Да, вопрос в целом был именно про то, как в случае pull модели разветвить поток данных. Не понятно, как можно генератор распараллелить на всех потребителей, полностью его не буферизуя и не заставляя пользователей писать очень сложный или непонятный код.
Как я понимаю, push и pull модели — из сетевой коммуникации? В обычном программировании есть термины для этого?
Вполне возможно, что не такой быстрый. Есть случаи, когда быстрые массивы не нужны или алгоритм нельзя переписать в их терминах. Думаю, у PyPy есть свои приложения. Про Numba написано, что он только часть языка Python поддерживает (PyPy, насколько я помню, тоже). В любом случае я не вижу смысла ориентировать архитектуру на конкретные классы.
На самом деле ленивые вычисления с numpy не совместимы (он не по одному значению обычно обрабатывает, а целый массив), и если у вас все вычисления — последовательность преобразований массивов, то нужно либо целиком передавать эти массивы между элементами (хотя почему бы и нет), либо не пользоваться этим фреймворком.
Мне ленивые вычисления, которые сберегают память (и частично скорость, т.к. не надо ждать конца чтения данных для начала работы) показались важнее ориентации на быстрые массивы (я сам ими не пользуюсь, и проблемы у меня больше возникали архитектурного плана, как передать значения от одного элемента к другому).

1) не вижу в Apache Spark ничего, что связано с проблемами в моём анализе данных. Ни одного слова архитектура на сайте. Kubernetes, hadoop — мне никогда не требовались, как и все другие вещи, на которые ориентируется эта система.
Задача Lena — высокоуровневый анализ данных, а здесь всё ориентировано на распределенные вычисления, специфические базы данных. Больше похоже на библиотеку, чем на фреймворк.
Какие конкретно аналогичные системы есть? Я нашёл только одну на Питоне. Есть программы, которые называют себя фреймворками, но по сути они библиотеки, они не говорят пользователю как ему или ей писать программу.


Насчёт твоей статьи — спасибо за ссылку.
У неё тоже другие задачи.


The aim of the DataForge is to automate some standard tasks like parallel data processing, logging, output sorting and distributed computing.


И ещё: я не отправлял эту статью в хаб Big Data, потому что здесь нет никакой специфики больших данных. Это прежде всего архитектура для высокоуровневого сложного анализа, когда сложности в самой архитектуре, сведении разных данных вместе. Скорость в ней не в приоритете.

Зачем смотреть код, если проще спросить)
Один из плюсов "не использования" чего-то — нет зависимостей. На некоторые системы может быть невозможно установить ту или иную программу, в особенности большую. Поэтому архитектурный фреймворк в идеале должен работать для максимального числа систем. Структурная подтипизация позволяет пользоваться элементами даже без фреймворка: можно вызывать метод run и не надо ничего наследовать и т.п.
Кстати, у меня есть Numpy Histogram в подпапке structures, вместе с обычной гистограммой Lena. Я им не пользуюсь, правда, и к архитектуре она имеет слабое отношение, просто один из возможных элементов.

Вам нужны быстрые массивы? Используйте numpy. Нужен быстрый код? PyPy. PyPy не плох, у него есть свои приложения.


Быстрый массив — это не вопрос архитектурнэы, а локальная вещь в вашей функции или классе…


Массивы numpy хранятся целиком в памяти, поэтому подходят не для всех задач.


Архитектура — это общая вещь. Если надо, Вы используете PyPy, но можете также использовать numpy.

Lena не читает данные. Но вы можете с ней свести вместе разные данные (читаемые разными элементами).
Для нормальной обработки нужно в какой-то момент их унифицировать.
Если проблем с архитектурой, сведение своих данных (внутри вашей программы) вместе у вас не возникало — то вряд ли фреймворк нужен.
Анализ данных — это описание программ, поэтому я не вижу здесь большого отличия от программистов. Всё, что можно автоматизировать — нужно автоматизировать.

1

Information

Rating
Does not participate
Location
Россия
Registered
Activity