Обновить
65

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

14
Подписчики
Отправить сообщение
К сожалению не решена, не говоря уже про «успешно». Именно по причине малого размера и накапливания. Сортировкой же занимаются сотни предприятий, там технический прогресс на месте не стоит.
С банками, бутылками, строительным мусором и т.п. в принципе и сейчас неплохо справляются. А вот против чего решения пока нет — это мелкий мусор. То есть окурки, кусочки пластика, упаковки, осколки и обломки всякие, которые накапливаются на газонах и прочих свободных поверхностях в городах. Человек их эффективно собирать не может, так как слишком маленькие и много.

Вот если бы робота сделать, которого высаживаешь на газон, он ездит потихоньку и всю эту мелкую дрянь подбирает… идея давно витает, но ничего подобного еще не видел.
>> например, на питоне реализуемы весьма заковыристые задачи контентного анализа в реальном времени (жёсткий код на C или плюсах, обвязка полегче на питоне)

Это называется «каша из топора» :) Если код на C/C++, то обвязку на чем угодно сделать можно. Для математики в Matlab удобно, например.

>> питон *хреново* декомпилируется; уверяю, это плюс гораздо чаще, чем может показаться

Серьезно есть потребность в декомпиляторе питона? Если да, и еще не существует, то можно написать,- пару месяцев как-нибудь получится выделить. Но очень сомнительно…
1. Охотно допускаю и был бы очень рад. Вбил сейчас «Python performance» в Гугл и получил вот эту страницу: http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
Тоже алгоритмическая задача, те же самые два порядка разницы к C++/Java (исходный код прилагается). Хм…

4. Отсутствие одной из основных структур данных в стандартной библиотеке меня действительно удивило (и заставило потерять часа два на поиски, сравнение и установку стороннего кода). Культура открытости — дело хорошее, разумеется.

Что касается синтаксиса, форматирования и пр. — дело тут не во вкусовщине. Мне все равно, ставить скобочки или двоеточие, писать else if или elif. Дело в неудобствах — например, отлаживая алгоритм, я часто комментарю/вытаскиваю обратно строки. Но Питон почему-то не дает оставить пустой блок. То есть мне нужно дополнительно вписывать туда каждый раз «pass», дурная работа же. Почему нет инкрементов, чье отсутствие размножает строки вида a+=1? Это ведь простейшие вещи, самые основы, на которые приходится наталкиваться постоянно и которые крадут время.
Код мне пришлось бы сейчас выдирать и оформлять, чтобы запустился отдельно, что вряд ли имеет смысл. Если интересно, посмотрите на модуль difflib, тут похожая тематика.
>> 2) Вероятно имелся в виду OrderedDict — Python3 OrderedDict

Его я видел, но там не натуральный порядок элементов, а порядок добавления, что совсем из другой оперы. В итоге я использовал sorteddict отсюда http://www.grantjenks.com/docs/sortedcontainers/

1) Пример: пару дней назад нужно было посчитать коэффициенты похожести (similarity) для некоторого количества строк между собой. Для 3К строк это заняло на Питоне около 5 минут. Для 10K даже начинать не стал, перевел на Яву, сделало за секунды.
2) dict же не упорядоченный? Мне нужна была map с порядком на ней. По OrderedMap для Питона у меня поиск ничего не находит, уточните пожалуйста.
3) Да нет, иные толкования меня вполне устраивают. Их воплощение смущает, неудобно же.

>>Ну и Вам, очевидно, Python кажется не удобным с точки зрения программиста на Java.

Вряд ли, мне доводилось писать на языках от Бэйсика и Пролога до С++ и Матлаба. Просто Ява сейчас удобна тем, что соединяет достаточную скорость с мощной стандартной библиотекой. А так я за языки не держусь совершенно.
>> Python позиционируется как простой и понятный язык и, вероятно, хорош для обучения (как первый язык).

Согласен, это вполне возможно. Для абсолютного новичка он будет понятнее и легче в освоении. Но копнуть в глубину и начинается… Жаловался профессионально работающим с SciPy/NumPy, ответ был: главное при работе с Питоном — это как можно больше вынести в C++ :)
Поскольку тема явно не техническая, позволю себе небольшой оффтоп: а что такого выдающегося все внезапно нашли в Питоне? Вопрос совершенно серьезный. Мне приходится иногда на нем писать небольшие вещи и пока впечатление скорее нехорошее.

Претензии например:
1) Быстродействие. Вижу разницу в два порядка даже с Явой, многие задачи на нем из-за этого невозможны в принципе.
2) Значимые whitespaces. Финиш полный, пришлось настроить перед каждым запуском автозамену табуляторов на пробелы, чтобы не ругался.
3) Куцый язык с велосипедным синтаксисом (отсутствие ++ и --, нормального for цикла, запрет пустых блоков и
т.д.)
4) Еще более куцая стандартная библиотека. Понадобилась обычная TreeMap — вперед шерстить сеть на предмет чьих-то third-party.
5) Какая-то каша с кодировками и строками, постоянные encode/decode
6) Еще больший финиш с ООП/функциями/классами: self явным параметром, приватные функции через имя…

Полное ощущение, что имею дело с каким-то игрушечным языком двадцатилетней давности.
>> Так вот это неулучшаемое представление кода в виде максимально упорядоченного линейного связного графа с левыми и правыми связями и есть тот самый «irreducible CFG»

Нет, это совершенно другой термин. Irreducible (неприводимый?) граф — это такой граф выполнения, который не может быть выражен средствами структурного программирования, т.е. без использования goto. Посмотрите статьи на эту тему.

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

Это не обфускация, а обыкновенное перемешивание блоков. Оно не имеет никакого значения, так как мы работаем с графом, а не с линейным порядком. Хотя примитивные декомпиляторы (типа jad'a) могут и споткнуться.
>> У меня этот «irreducible CFG» назывался «ориентированный циклический плоский граф (DCG), с минимальным количеством левосторонних связей».

Хм… сомневаюсь, что мы говорим об одном и том же, но все может быть.

Где-то году в 2008 я написал решение на примере Явы — декомпилятор Fernflower, теперь он часть IntelliJ IDEA:
https://github.com/JetBrains/intellij-community/tree/5a805eea3e550c3605f2f01b6857858e170b7954/plugins/java-decompiler
Оформить в статью руки так и не дошли, а поскольку код никто не читает :) то в 2015 его благополучно переоткрыли товарищи из Бонна:
https://net.cs.uni-bonn.de/fileadmin/ag/martini/Staff/yakdan/dream_ndss2015.pdf
Обфускация здесь не имеет значения, проблема решена в том числе и для irreducible CFG.
>> декомпилировать обфусцированный, скажем от Wise Advise или от Авы (Awa) байт-код? Здесь уже нужно изобретать нетривиальные алгоритмы [...]

Все уже изобретено. Проблема декомпиляции байткода (в более общем виде: архитектур с разделением кода и данных) решена около 10 лет назад, алгоритмы свободно доступны.
Германия своих граждан не выдает, там ему действительно ничего бы не угрожало. Насколько я понимаю, до ареста он не считал необходимым переезжать, а после уже не мог.
1) Следствие (в отличие от суда) может использовать любую информацию
2) «Fruit of the poisonous tree» в европейских странах прописано очень рудиментарно
А разговаривать с поддержкой Hetzner'a пробовали? Сильно сомневаюсь, что это намеренно. Если будут сложности с выяснением — отпишите в личку, попробуем разобраться.
Не мы, а вы. (с)
Совершенно верно, эта задачка из старых олимпиадных для младших классов.
операторы телефонных сетей в ЕС обязаны хранить записи всех телефонных разговоров в течении 2-х лет

Не двух, а двадцати. На алмазных носителях.

Дело советских газет живет и побеждает.
Разработчики I2PdBrowser используют портативную версию браузера Mozilla Firefox.

Только как-то криво немного. Первым делом надо вытащить FirefoxPortableSettings.ini на верхний уровень, переименовать в FirefoxPortable.ini (секцию внутри тоже) и добавить как минимум AllowMultipleInstances=true. Иначе не даст запуститься параллельно с другими.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность