Ну а зачем добавлять? Тебе хочется вообще в принудительном порядке использовать эти методы извне? В случае со свободным ПО наглухо запретить вообще не получится. А нужно хочешь показать, что эти переменные/функции/свойства не нужно вызывать извне, т.к. это может привести к плохим результатам, то этого будет достаточно.
Нельзя использовать свой «реактор». Т.е. напрямую greenlet.Greenlet.switch() делать явно запрещено докой ибо чревато.
Другая проблема: есть проблемы с вызывом C API из-за манипуляций со стеком. Я пару месяцев назад писал что это брехня и проблема надуманная. Похоже что я был не прав. Не помню в какой момент я сел в лужу. Возможно, это было при попытке соединить cython-овые обвязки с gevenet.
Кстати, в py3k готовят закоммитить поддержку вложенных генераторов и куски twisted-подобного реактора. Только это всё полумеры которые ни разу не замена gevent.
Кстати, тот же Дийкстра и о басике высказывался нелицеприятно, насчет безнадёжно испорченных мозгов студентов, его изучающих.
Спорно. Меня учили программированию впервые именно на Бейсике. Восьмилетнему пацану, впервые увидевшему PC, разобраться даже в Паскале будет трудно с непривычки.
А на Бейсике мне умудрились в короткий срок преподать основы алгоритмов, декомпозиции и пользования справочной системой. Достаточно, чтобы освоить самостоятельно Паскаль и Си, для начала.
И пока никто на мои безнадёжно испорченные Бейсиком мозги не жаловался.
И вот именно поэтому я продолжаю «выбирать ЯП под задачу».
Выбор языка под задачу имеет смысл тогда, когда языки сильно различаются. Когда языки взаимозаменяемы без последствий, выбор языка «под задачу» эквивалентен выбору по желанию левой пятки. Я просто придираюсь к словам :)
очень хорошо поддерживаемых и активно разрабатываемых фреймворка на питоне.
Тут ты загнул. Я о джанге не по наслышке знаю и много ковырялся с ней и в ней. У проекта очень серьёзная нехватка рук итд итп. Баги годами висят.
и никто не собирается в ближайшем будущем ее портировать на 3.
Куча попыток была. И обсуждений тоже навалом. Как щас не знаю, но я учавствовал в этом обсуждении в списке рассылки. Потом забил потому что джанго прибитое гвоздями УГ и себе сайтик переделал на bottle.py. Только давай не будем это обсуждать, уже сто раз в Web Development с baverman и другими «альтернативщиками» (т.е. теми кто юзает pyramide, werkzeug, pylons, web.py итд итп) обсудили :)
с большим скрипом проапдейтил свой appengine до 2.7
А как же хвалёная совместимость со старым кодом? Ты же писал что всё легко поддерживается? Ох не зря я писал что даже с py2 кодом много возни.
Про басик - это моё личное, давно и глубоко укоренившееся мнение. С Дийкстрой полностью согласен. На басике ничего никогда не писал, но смотрел достаточно много исходников и один раз наблюдал (в течение двух месяцев), как на нём решается конкретная задача.
Я начинал с С. Теория и практика параллельно. В жёстком режиме.
И пока никто на мои безнадёжно испорченные Бейсиком мозги не жаловался.
Про тебя лично ничего плохого сказать не могу и не хочу. Нет такой привычки, не зная человека и его дела, выносить какое-либо суждение о нём. Но про басик останусь при своём мнении.
Ну я уже писал что мне хотелось бы иметь gevent-like вичи в самом питоне вместе с доступом к «реактору».
Ну и ещё куча вещей которые я щас не вспомню потому что конкретно засел с AIO. Ну и не просто так в мире существует много языков программирования помимо питона. Не всё на питоне делается легко и красиво.
то есть если поля было бы нельзя переопределить - они были бы ненужны? :)
харош издеваться, ты всё понял :). Могу даже привести конкретный пример когда мне это понадобилось. В целях экспериментов я делал общую прослойку которая позволяла бы переключаться с gevent на threading или multiprocessing (не на лету конечно). Так вот было неприятно что многие имена типа start(), run() status() итд были уже заняты :(. Я понимаю что не бог весть какая проблема, но неприятненько. Вот если бы их можно было «скрыть»...
Выбор языка под задачу имеет смысл тогда, когда языки сильно различаются.
Да. Кто-то возражает?
Когда языки взаимозаменяемы без последствий, выбор языка «под задачу» эквивалентен выбору по желанию левой пятки.
Значит, я следую «желанию своей левой пятки». Для специфического поиска в своём барахле в home пишу скриптик на bash, для аналогичного поиска, но предназначенного для слабо подготовленного пользователя, пишу программку на питоне с гуем (или ещё на чём-то аналогичном), а сервер для локалки на 5-6 клиентов пишу на С. Вот такая у меня капризная левая пятка. :)
Могу даже привести конкретный пример когда мне это понадобилось. В целях экспериментов я делал общую прослойку которая позволяла бы переключаться с gevent на threading или multiprocessing (не на лету конечно). Так вот было неприятно что многие имена типа start(), run() status() итд были уже заняты :(. Я понимаю что не бог весть какая проблема, но неприятненько.
эм, кажется ты не понимаешь что я хочу. Я хочу reactor pattern заимплементить вместе с gevent (потому что этот паттерн чрезвычайно хорошо ложится на задачу (или наоборот?)). Прямых путей для этого я не вижу. В сторону twisted попрошу не посылать по причине того что в сравнении с gevent оно со своими коллбэками выглядит... ну как далёкий привет из прошлого, кмк. Хотя надо будет ещё раз по докам пройтись, ВДРУГ там всё совсем не так как я помню.
java-интерпретатор/компилятор(Jython). Благодаря использованию Jython вместо CPython удаётся достичь большей производительности, так как виртуальная машина Java (Hotspot JVM) выполняет динамическую компиляцию (JIT-compilation) байт-кода в исполняемой код целевой платформы, в отличии от CPython, который интерпретирует собственный байт-код. В результате чего появляется возможность одновременного использования классов и библиотек языков Java и Python.
В си бывает ошибешься на 1 индекс массива и получаешь сегфолт примерно на каждый 16й запуск в разных местах. А еще разница между отладочной и релизной сборкой может сюрпризы подкинуть, если где-то какая-то неточность с инициализацией полей. Может помочь статический анализатор, valgrind, но в java, например, эти ошибки просто невозможны.
Для себя мелкие инструменты на скале, использую как функциональную яву. Питон не нравится динамической типизацией (при быстрой разработке без проектирования это ужас). Но я 95% времени пишу под телефоны, там как раз акцент на скорость.
Я к тому, что языки проектируются так, чтобы их можно было удобно использовать и/или эффективно исполнять программы на них. А выстрелить себе в ногу можно даже Аду упросить.
В си бывает ошибешься на 1 индекс массива и получаешь сегфолт примерно на каждый 16й запуск в разных местах. А еще разница между отладочной и релизной сборкой может сюрпризы подкинуть, если где-то какая-то неточность с инициализацией полей. Может помочь статический анализатор, valgrind, но в java, например, эти ошибки просто невозможны.
В целом всё верно. Java, конечно, более строго такие вещи контролирует. Нас, сишников, так не пасут. :) Но я от подобного рода ошибок избавился уже достаточно давно. Выработалась уже дисциплина в этих нюансах.
Но Java я знаю на уровне helloworld и tic-tac-toe. :) Поэтому пользоваться её достоинствами не могу.
ты издеваешься? Я же написал что мне надо свой обработчик событий. Как мне ещё яснее написать? А писать «you're doing it wroing» или «это исследовательская задача» и я умею.