The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз компилятора Python - Nuitka 0.4.2

30.03.2013 23:30

Выпущен релиз компилятора для языка Python - Nuitka 0.4.2, позволяющего транслировать скрипт на языке Python в представление на C++, которое можно скомпилировать в исполняемый файл, использующий libpython для обеспечения максимальной совместимости с CPython (используются штатные средства CPython для управления объектами). Возможна компиляция как библиотек так и непосредственно исполнительных файлов, в том числе и рекурсивная.

В текущем виде проект уже обеспечивает заметное повышение производительности итогового исполняемого файла по сравнению с CPython (опережение на 258% в тесте pystone). Тем не менее, началась работа по реализации более значительных оптимизаций, которые позволят перевести производительность на новый уровень. В частности, уже реализована начальная система развёртывания констант и планируется задействование средств статического анализа кода для учёта информации о типах переменных при трансляции в код на С++, что позволит использовать нативные типы данных без обращения к libpython. Для преобразования типов, которые не удалось угадать при проведении автоматизированного анализа, разработчику будет предоставлена возможность ручного определения модуля с подсказками об используемых типах. Также планируется реализация интерфейса для взаимодействия с кодом на языке Си, через подключение написанных на Си ctypes-биндингов.

В текущем выпуске полностью поддерживаются версии языка Python 2.6, 2.7, 3.2 и базовый синтаксис версии 3.3. Компиляция выполняется путем трансляции кода в С++ и последующей передачи компилятору С++, таким как g++, MinGW g++, clang. Поддерживаются операционные системы Linux, MacOS X, Windows (32bit), FreeBSD, и аппаратные платформы x86, x86_64 и arm. Выпуск 0.4.2 примечателен добавлением поддержки Python 3.3 и FreeBSD, а также большой порцией новых оптимизаций и исправлением ошибок.

Установка компилятора может быть выполенена через pip:


   sudo pip install nuitka 

Компиляция программ может быть выполнена командой:


   nuitka-python --recurse-all some_file.py 
или просто:
   nuitka --exe some_file.py



  1. Главная ссылка к новости (http://nuitka.net/posts/nuitka...)
  2. OpenNews: Первый выпуск Topaz, высокопроизводительной реализации Ruby, написанной на языке Python
  3. OpenNews: Релиз PyPy 1.9, реализации Python, написанной на языке Python
  4. OpenNews: Представлен pypy-stm, интерпретатор Python с поддержкой распараллеливания на многоядерных системах
  5. OpenNews: Релиз Python-компилятора Shed Skin 0.8
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/36544-nuitka
Ключевые слова: nuitka, python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (140) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Анонимиус (??), 10:16, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –14 +/
    Мне нравится этот оборот "в текущем виде проект уже обеспечивает" применительно к софту. Два раза. Видать это главное его достоинство. Текущий проект.
     
  • 1.4, Аноним (-), 10:53, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Название хорошее, но какие преимущества перед shedskin(который хорош в основном только на тривиальном коде)?
     
     
  • 2.80, Аноним (-), 12:31, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Название хорошее, но какие преимущества перед shedskin(который хорош в основном только
    > на тривиальном коде)?

    Название от имени жены разработчика - Анютка, да она русская.
    Преимущество - компилируется любой корректный код, не требуется дописывания или переписывания кода.

     

  • 1.5, anono (?), 10:55, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Компилятора Python?
    Хмм.
     
     
  • 2.42, Зад (?), 13:50, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Да. На самом Python делают прототипирование, которое позволяет быстро сделать полурабочий вариант. Потом этот полурабочий компиляируют и еще лучше тестируют, и если все хорошо паралельно начинают переписывать проект на что-то побыстрее.
     
     
  • 3.115, Аноним (-), 04:44, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Да. На самом Python делают прототипирование, которое позволяет быстро сделать полурабочий вариант.

    Но зачем тратить время на полурабочий вариант? Не проще ли сразу делать нормально? На что только не пойдет народ чтобы плюсы не учить...

     
     
  • 4.128, бедный буратино (ok), 05:37, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Голову лучше забивать нормальными вещами Если человек начинает думать категория... большой текст свёрнут, показать
     

  • 1.7, Eddhie (ok), 11:11, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    Что только не придумают, чтобы не учить C++ :)
     
     
  • 2.8, Аноним (-), 11:22, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    …и это правильно. Всякой фигнёй вроде С++ незачем забивать голову. Вот чистый С — совсем другое дело.
     
     
  • 3.11, Аноним (-), 11:35, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    от чистого си уже и с гцц отказываться начяли ибо не нужен для прикладного софта.
     
     
  • 4.14, Аноним (-), 11:54, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >от чистого си уже и с гцц отказываться начяли ибо не нужен для прикладного софта.

    Это произошло, что все старые и опытные программисты самоустранились, и в проект нахлынула волна неопытных новичков. Как говорил Линус Торвальдц, уже того факта, что на си++ пишут там много посредственных программистов, должно быть достаточно, чтобы полностью отказаться от этого языка.

     
     
  • 5.17, Аноним (-), 12:21, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +11 +/
    На русском языке говорят много плохих людей, полностью откажитесь от русского. Или вам надо, чтобы САМ ЛИНУС это сказал?

    P.S. с вашим оппонентом тоже не согласен. С вполне живет и для прикладного софта, во-первых, а во-вторых, компилятор - не прикладной софт, и причины перехода на С++ были явно далеки от вашего "кококо не подходит".

     
     
  • 6.23, Аноним (-), 13:05, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Покажите мне большие прикладные проекты на СИ которым не более 2 лет.
     
     
  • 7.26, Аноним (-), 13:11, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Покажите мне большие прикладные проекты, которым не более 2 лет.
     
  • 7.53, fiskus (?), 14:17, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/linuxmint/Cinnamon

    https://github.com/languages/C

     
     
  • 8.110, Аноним (-), 00:36, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Cinnamon на си, с вами плохо похоже СИ там только по историческим причинам ибо ... текст свёрнут, показать
     
     
  • 9.116, Аноним (-), 04:47, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну знаете, любые проекты - по историческим причинам Reason вы не можете писать... текст свёрнут, показать
     
     
  • 10.138, Eddhie (ok), 12:47, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Это что ли по индексу Tiobe ... текст свёрнут, показать
     
  • 10.143, Аноним (-), 20:35, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Не любые а только те, которым досталось в наследство гора хода, что свойственно ... текст свёрнут, показать
     
  • 6.77, Anonim (??), 11:48, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > На русском языке говорят много плохих людей, полностью откажитесь от русского. Или
    > вам надо, чтобы САМ ЛИНУС это сказал?

    На русском, к сожалению, говорят все меньше и меньше. Больше говорят на Олбанском, вот от него бы отказаться


     
  • 5.24, Аноним (-), 13:09, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Врать и придумывать сказки нехорошо. Новичков там уже лет 5 не было, разве что индусы из одного университета (где их натаскивает один из ветеранов). На C++ перешли в том числе для того, чтобы снять технический долг и привлечь новичков.
     
     
  • 6.30, Аноним (-), 13:19, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Врать и придумывать сказки нехорошо. Новичков там уже лет 5 не было,
    > разве что индусы из одного университета (где их натаскивает один из
    > ветеранов). На C++ перешли в том числе для того, чтобы снять
    > технический долг и привлечь новичков.

    Про технический долг это вы на хабре лучше расскажите. Реальная проблема gcc не технический долг, а то что там давно не наблюдается нормальных специалистов. Вообще, можно сформировать некий критерий, по которому человек, знающий си, но не знающий си++ это лучший программер, знающий и то и другое - средний, а знающий только си++ - быдлокодер.

     
     
  • 7.33, Eddhie (ok), 13:24, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ох...ть! Белый - хорошо, мулат - так себе, чёрный - плохо.
     
     
  • 8.36, Аноним (-), 13:37, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет не так Если у тебя родители наркоманы - ты плохой, если строители - средний... текст свёрнут, показать
     
     
  • 9.63, Eddhie (ok), 15:03, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Да нет, это больше похоже на если конструктор чертит на бумаге, он крутой спец,... текст свёрнут, показать
     
     
  • 10.91, GraiT (?), 14:30, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А ведь в твоих словах есть доля истины, так как после хорошого освоения карандаш... текст свёрнут, показать
     
     
  • 11.102, Аноним (-), 20:08, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ути пуси На спор ты тупо карандашиком хиленький А0 будешь неделб рисовать и в... текст свёрнут, показать
     
  • 9.117, Аноним (-), 04:52, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    К вопросу о программистах и их знаниях http ithappens ru story 10776 Ну что, ... текст свёрнут, показать
     
  • 7.56, Аноним (-), 14:37, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Вообще, можно сформировать некий критерий, по которому человек, знающий си, но не знающий си++ это лучший программер, знающий и то и другое - средний, а знающий только си++ - быдлокодер.

    Знать Си++, не зная Си — всё равно, что владеть кошельком, но не владеть его содержимым.

     
     
  • 8.70, Аноним (-), 15:51, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Забавное заблуждение ... текст свёрнут, показать
     
     
  • 9.72, Аноним (-), 16:07, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Почему заблуждение Общее подмножество Си и Си охватывает Си почти полностью ... текст свёрнут, показать
     
     
  • 10.104, Аноним (-), 20:11, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А потом такой фрукт слегка поправляет неточности в коде старичков и в Debian... текст свёрнут, показать
     
  • 9.118, Аноним (-), 04:54, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нифига Нормальный си ник си знает А вот быдлокодеры которые полагают что си ... текст свёрнут, показать
     
  • 7.81, Аноним (-), 12:35, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Про технический долг это вы на хабре лучше расскажите. Реальная проблема gcc
    > не технический долг, а то что там давно не наблюдается нормальных
    > специалистов. Вообще, можно сформировать некий критерий, по которому человек, знающий
    > си, но не знающий си++ это лучший программер, знающий и то
    > и другое - средний, а знающий только си++ - быдлокодер.

    Чем человек больше знает и умеет - тем хуже?
    Вы бы свою секту чисто "Си-разработчиков", c опытом в одну курсовую закрыли бы уже.

     
     
  • 8.93, GraiT (?), 14:34, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А ведь ты прав ... текст свёрнут, показать
     
     
  • 9.96, бедный буратино (ok), 14:48, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Последнюю похвальную мысль я еще в моей хрестоматии, когда мне двенадцать лет бы... текст свёрнут, показать
     
  • 8.100, Аноним (-), 18:25, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Не, тогда хуже всех был бы тот, кто знает Си и Си одновременно Очевидно же ... текст свёрнут, показать
     
  • 3.18, Аноним (-), 12:22, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Вот чистый С — совсем другое дело.

    Чистый C хорош для ядра ОС. Пока что хорош. А вот в области гуя любители чистого C родили такого уродца, как Gtk.

     
     
  • 4.22, BratSinot (ok), 13:02, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Сами вы уродец, а Gtk простой как пробка, а связке с linglade/GtkBuilder вообще сводится к написанию функций для ивентов.
     
  • 4.45, Зад (?), 13:52, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Все нормально с GTK, язык C там очень даже в тему. Тем более что сейчас на нем писать нет нужды, есть Vala, на котором достаточно описать логику и обработчиков, остальное делается в Glade
     
  • 4.119, Аноним (-), 04:56, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Чистый C хорош для ядра ОС. Пока что хорош.

    И вот уже лет 40 как ничего лучше толком и не сделали.

    > А вот в области гуя любители чистого C родили такого уродца, как Gtk.

    Хрень как хрень. Живет себе, развивается.

     
  • 2.21, лох (?), 12:47, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –8 +/
    > Что только не придумают, чтобы не учить C++ :)

    а теперь представьте, что, например, все сайты писались бы на С++. Как с серверной, так и с клиентской стороны. Загружаешь страничку, запускаешь копмилятор, и через 20 минут на страничке появляются анимация, ютуб и обработчики кликов...
    И почему вообще именно С++? Тогда уж сразу, что только не придумают, чтобы не учить ассемблер, тьфу, двоичные коды.

     
     
  • 3.47, Зад (?), 13:53, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Твой ник говорит сам за себя.
    p.s. мой тоже
     
  • 3.52, YetAnotherOnanym (ok), 14:15, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ладно, ладно, сравнили булки с пальцем. Одно дело загрузил-отрендерил-показал, другое дело - сервис, который крутится 24*7 и молотит этих страниц тыщщи в секунду.
     
  • 3.54, fiskus (?), 14:22, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Плохой пример. Если бы все писалось на C++, браузер был бы для просмотра только текста, а у всех сайтов были бы десктопные-приложения. Ну как на телефонах сейчас.
     

     ....большая нить свёрнута, показать (37)

  • 1.9, Нанобот (?), 11:25, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    не прошло и тридцати лет, как разработчики решили заняться оптимизацией питона
     
  • 1.12, d (??), 11:42, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    "релиз компилятора ..., позволяющего транслировать"
    Я всю жизнь думал, что такие программы называются словом на букву т. Но, видимо, сейчас модно писать компиляторы. Почти как раньше браузеры и позже операционные системы.
     
     
  • 2.38, Зад (?), 13:46, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    В компилятор встроен транслятор, если что. Транслятор это шткуа которая транслирует из одного представления в другое.
     
     
  • 3.43, Аноним (-), 13:50, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В компилятор встроен транслятор, если что. Транслятор это шткуа которая транслирует из
    > одного представления в другое.

    Терминатор, это такая штука, которая терминирует нечто, то есть превращает из обычного состояния в состояние терминированности.

     
     
  • 4.82, Аноним (-), 12:40, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> В компилятор встроен транслятор, если что. Транслятор это шткуа которая транслирует из
    >> одного представления в другое.
    > Терминатор, это такая штука, которая терминирует нечто, то есть превращает из обычного
    > состояния в состояние терминированности.

    Терминатор это губернатор Калифорнии.

     
     
  • 5.95, Аноним (-), 14:48, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Терминатор — это граница между дневным и ночным полушариями планеты.
     
     
  • 6.97, бедный буратино (ok), 14:50, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Терминатор — это граница между дневным и ночным полушариями планеты.

    Теперь понятно, почему 10Base2/10Base5 работали в зависимости от времени суток.

     
  • 2.40, Аноним (-), 13:47, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это всё пошло с llvm.
     

  • 1.13, Аноним (-), 11:50, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно. Потом они говорят: ребята, давайте сделаем типизацию, дадим подсказку нашему чудо-компилеру. Так получается новый недо-язык, который имеет мало общего с исходным.

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

     
     
  • 2.16, Grmmhnd (?), 12:20, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Беда, в том, что, как правило, при использовании более производительных решений начинает страдать скорость разработки, поэтому и появляются такие подобия.
    Но, все-таки, то, как к этой проблеме подходят Scala и Go, мне кажется более правильным.
     
  • 2.20, лох (?), 12:43, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > не хотят мириться с тем, что он тормозит
    > Каждой задаче свой язык

    вы сами себе ответили. Ничего не тормозит. По крайней мере на тех задачах, на которых рационально использовать питон.

     
     
  • 3.120, Аноним (-), 05:14, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > задачах, на которых рационально использовать питон.

    Т.е. всякие одноразовые скриптики.

     
     
  • 4.142, Аноним (-), 18:55, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Одноразовые скриптики — это оксюморон, как горячий лёд или windows-сервер. Писать скрипт для того, чтобы использовать его один раз, а потом выбросить, нецелесообразно. Скрипты пишут тогда, когда они могут пригодиться еще не раз.
    И да, какой смысл писать скрипт на python, если есть sh, perl и tcl?
     
  • 2.28, Аноним (-), 13:13, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно

    Нет. Компилятор вычисляет типы по простым правилами auto a = "str"; или решением уравнений. Функции в питоне имеет смысл обрабатывать как шаблонные функции в C++, то есть для каждого набора типов аргументов инстансцируется специализация функции и генерируется код для конкретного набора типов.

     
     
  • 3.32, Аноним (-), 13:23, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >>Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно
    > Нет. Компилятор вычисляет типы по простым правилами auto a = "str"; или
    > решением уравнений. Функции в питоне имеет смысл обрабатывать как шаблонные функции
    > в C++, то есть для каждого набора типов аргументов инстансцируется специализация
    > функции и генерируется код для конкретного набора типов.

    Это подходит только для простых типов, а что делать с объектами?

     
     
  • 4.41, Аноним (-), 13:48, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    делать толстые таблицы методов на манер того, как это делается в objective C.
     
  • 2.31, Аноним (-), 13:20, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно

    Избежно.



    #include <stdio.h>
    // Упрощённая модель динамической типизации:
    typedef enum type_t {NULL, INTEGER, REAL, OBJECT} type_t;
    typedef struct dynamic_type {
        type_t tag;
        union {
            long integer_value;
            double real_value;
            void *pointer_value;
        };
    } dynamic_type;

    int main(){
        dynamic_type variable1 = {.tag = INTEGER, .integer_value = 42};
        dynamic_type variable2 = {.tag = REAL, .real_value = 3.14159265358979};
        printf("SUMM: %f\n", variable1.integer_value + variable2.real_value);
    }



    Это что, правда так сложно?

     
     
  • 3.34, Аноним (-), 13:27, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >[оверквотинг удален]
    > } dynamic_type;
    > int main(){
    >     dynamic_type variable1 = {.tag = INTEGER, .integer_value =
    > 42};
    >     dynamic_type variable2 = {.tag = REAL, .real_value =
    > 3.14159265358979};
    >     printf("SUMM: %f\n", variable1.integer_value + variable2.real_value);
    > }
    >


    > Это что, правда так сложно?

    Не сложно, но при чём тут компиляция питона в си? Возмём код z = x + y. Теперь покажите, как сделать из этого си, если тип x и y не известен.

     
     
  • 4.44, CPP (??), 13:50, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >> 42};
    >>     dynamic_type variable2 = {.tag = REAL, .real_value =
    >> 3.14159265358979};
    >>     printf("SUMM: %f\n", variable1.integer_value + variable2.real_value);
    >> }
    >>


    >> Это что, правда так сложно?
    > Не сложно, но при чём тут компиляция питона в си? Возмём код
    > z = x + y. Теперь покажите, как сделать из этого
    > си, если тип x и y не известен.

    В С++ думаю, что это будут объекты (абстрактные типы), а не базовые типы данных, так же как в C#. Возникает ощущение, что человек изобретает велосипед -)

     
  • 4.46, Аноним (-), 13:52, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Возмём код z = x + y. Теперь покажите, как сделать из этого си, если тип x и y не известен.




    python_type z;
    if (x.__add__.type == PYTHON__FUNC){
        x.__add__(x, y, &z);
    }

    //тем временем где-то внутри функции python_float.__add__(const python_type x, const python_type y, python_type &z):
    double x_temp, y_temp;
    bool result = cast_to_double(x,&x_temp);
    bool result = result && cast_to_double(y,&y_temp);
    if (result){
      z.type = PYTHON_FLOAT;
      z.float_value = x_temp + y_temp;
      return SUCCESS;
    } else {
      fputs("Type conversion error", stderr);
      return FAILURE;
    }



     
     
  • 5.55, Аноним (-), 14:22, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Читаю: если x позволяет складывать, вызвать функцию add в предположении что x,y,z это double. Ну да ладно, по крайней мере есть код. Фишка в том, что это идёт в сторону cpython. Что нужно получить на выходе:

    double z = x + y;

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

    int z = x + y;

    Ибо целые числа работают значительно быстрее. Посему без перекомпиляции никак.

     
     
  • 6.60, Аноним (-), 14:48, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Что нужно получить на выходе:
    > double z = x + y;
    > А ещё лучше сразу машинный код. В случае когда есть хотя бы минимальная возможность, сделать:
    > int z = x + y;
    > Ибо целые числа работают значительно быстрее. Посему без перекомпиляции никак.

    Нет.
    Если типы x и y известны заранее, то и тип z будет известен заранее (или будет заранее известный Error), и никакая перекомпиляция не потребуется.
    Если тип x или y не известен заранее, то и тип z будет неизвестен заранее, и никакая перекомпиляция не поможет.
    Что непонятно?

     
  • 4.79, Аноним (-), 12:27, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Не сложно, но при чём тут компиляция питона в си? Возмём код
    > z = x + y. Теперь покажите, как сделать из этого
    > си, если тип x и y не известен.

    Во-первых Вы когда примеры приводите, постарайтесь чтобы они были корректны.
    Ваш код не корректен если типы x и y не известны, python вернет ошибку.

    Во-вторых изучите мат.часть. На лицо полное не понимание вопроса. Есть много материалов по типизации, например вот хорошая статья: http://habrahabr.ru/post/161205/

     
  • 4.122, Аноним (-), 05:18, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > z = x + y. Теперь покажите, как сделать из этого си, если тип x и y не известен.

    Для си вообще до балды на самом деле какие там типы. Значения в памяти и нии...т. Как именно вы желаете суммировать гайки с бананами - ваше дело. Технически доступиться до гаек и бананов - можно.

    А вот то что некто может нисколько не сомневаясь засуммировать одно и другое и даже что-то на выход вернуть - вот это уже баг, а не фича. Т.к. програмер накосячит и не заметит нифига. Ну а что, чего-то же посчиталось!

     
     
  • 5.136, 123 (??), 10:25, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    "...Для си вообще до балды на самом деле какие там типы..."

    Задача не транслировать python в С, а транслировать в корректно работающую программу на C.




    if <условие 1>:
      x, y = "123", "456"
    elif <условие 2>:
      x, y = 123, 456
    else:
      x, y = [1, 2, 3], [4, 5, 6]

    z = x + y


    Пример синтетический, но как это транслировать в C, которому "типы до балды"?

     
     
  • 6.141, Аноним (-), 18:28, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/



    python_type *x, *y, *z;
    if (<условие 1>){
      x = new_python_string("123");
      y = new_python_string("456");
    } else if (<условие 2>) {
      x = new_python_int(123);
      y = new_python_int(456);
    } else {
      x = new_python_dict(new_python_int(1),new_python_int(2),new_python_int(3));
      y = new_python_dict(new_python_int(4),new_python_int(5),new_python_int(6));
    }
    z = get_python_method(x,"__add__")(y);



    Синтетическому примеру — синтетическое решение. Описания типа python_type и реализации функций не привожу, ибо принцип уже описан в примерах выше.
     
  • 2.78, Аноним (-), 12:16, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно.

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

    А в Python строгая, динамическая, неявная типизация, и приведение одного типа к другому возможно только через специальные функции, да и то не всегда.


    >А всё из-за того что люди не хотят мириться с тем, что он тормозит, вместо того чтобы учить более производитеьные решения.

    Да! Почти не осталось людей, которые пишут на fortran и в машинных кодах.

     
     
  • 3.123, Аноним (-), 05:19, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Да! Почти не осталось людей, которые пишут на fortran и в машинных кодах.

    То-то все критичные места в кодеках и тому подобном на ассемблере выписаны. Оно и понятно - если голову засунуть в бидон то кажется что весь мир состоит только из этого бидона.

     
     
  • 4.130, бедный буратино (ok), 05:42, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> Да! Почти не осталось людей, которые пишут на fortran и в машинных кодах.
    > То-то все критичные места в кодеках и тому подобном на ассемблере выписаны.
    > Оно и понятно - если голову засунуть в бидон то кажется что весь мир состоит только из этого бидона.

    Кодеки пишут специально созданные для этого люди. У обычных людей в жизни совсем другая цель.

     

  • 1.19, Аноним (-), 12:29, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Оставим в стороне вопрос нужно/не нужно. Больше интересует насколько оно работоспособно. Раньше про проект не было слышно ничего.
     
     
  • 2.25, Аноним (-), 13:09, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вы думаете оно плохо работает? в режиме интерпретации не отличить от питона
     

  • 1.27, Аноним (-), 13:13, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    PyPy мне кажется более перспективным
     
  • 1.39, Аноним (-), 13:46, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    От GIL'а оно избавляется? Если нет, то толку то.
     
     
  • 2.51, all_glory_to_the_hypnotoad (ok), 14:13, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    от GIL пробуют избавиться в PyPy
     
  • 2.83, Аноним (-), 12:44, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > От GIL'а оно избавляется? Если нет, то толку то.

    О Вы знаете такие слова! Для справки GIL - это такая штука, которую при желании можно просто отключить в обычном CPython, обычно в библиотеках связанных с вычислениями (numpy, scipy и т.п.) так и делают.

     
     
  • 3.105, Аноним (-), 20:15, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Для справки GIL - это такая штука, которую при желании можно просто отключить в обычном CPython,
    >обычно в библиотеках связанных с вычислениями (numpy, scipy и т.п.) так и делают.

    Бобёр -выдыхай!

     
  • 3.124, Аноним (-), 05:21, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > библиотеках связанных с вычислениями

    Вычисления на питоне - это что-то типа гонок на асфальтоукладчиках.

     
     
  • 4.150, Аноним (-), 11:52, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Вычисления на питоне - это что-то типа гонок на асфальтоукладчиках.

    Так а чё давай сравним скорость на реальных примерах. Например нужно перемножить пару матриц содержащих комплексные числа. С тебя рабочий код на Си. Я тебе свои две строчки кода на python покажу как ты код покажешь, а то обычно такие товарищи уклоняются от прямого сравнения, и да я уверен что эти две строчки моего кода будут быстрее выполнятся особенно на больших размерностях.  

     

  • 1.49, Аноним (-), 14:08, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Python вряд ли что-то поможет
     
  • 1.50, YetAnotherOnanym (ok), 14:11, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > уже обеспечивает заметное повышение производительности итогового исполняемого файла по сравнению с CPython (опережение на 258% в тесте pystone). Тем не менее, началась работа по реализации более значительных оптимизаций, которые позволят перевести производительность на новый уровень

    Охренеть... Это на каком же уровне его производительность сейчас? Всё-таки, похоже, я был прав, когда отказался от зопе/плоне/джанго/что-там-ещё-могло-быть когда выбирал основу для сайта конторы.

     
     
  • 2.57, chinarulezzz (ok), 14:38, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скажи нам всем, что же ты выбрал вместо тормозного питона-интерпретатора? С++?
     
  • 2.65, спец (?), 15:15, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +7 +/
    ты написал сайт на чистом C? кулибин... :)))

    браво, подскажи название своей "конторы", посмотреть, оценить r/s
    Если даже в нашей конторке, Django на nginx + uwsgi по тестам идёт 200 r/s... должно быть у вас конкурент фейсбука?

     
     
  • 3.68, YetAnotherOnanym (ok), 15:35, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –6 +/
    > должно быть у вас конкурент фейсбука

    Смотрите в противоположную сторону. Производительность - это ещё и возможность арендовать виртуальный сервер подешевле. А сайт не скажу, потому что всё заглохло за неимением бабок - как был у конторы сайт из пяти страничек на джумле, так и остался.

     
     
  • 4.84, Аноним (-), 12:50, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> должно быть у вас конкурент фейсбука
    > Смотрите в противоположную сторону. Производительность - это ещё и возможность арендовать
    > виртуальный сервер подешевле.

    Можете привести пример сдачи/аренды такого сервера?

    >А сайт не скажу, потому что всё заглохло
    > за неимением бабок - как был у конторы сайт из пяти
    > страничек на джумле, так и остался.

    Вот она - история успеха С++ в покорение веба.

     
     
  • 5.88, YetAnotherOnanym (ok), 13:58, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    google://аренда виртуального сервера
     
     
  • 6.90, Аноним (-), 14:17, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >google://аренда виртуального сервера

    Нет. Нужен пример экономии.  

      

     
  • 3.87, бедный буратино (ok), 13:43, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Можно я скажу Я когда-то писал сервер на чистом basic и winsock С нуля реализо... большой текст свёрнут, показать
     
     
  • 4.89, YetAnotherOnanym (ok), 14:10, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> ты написал сайт на чистом C? кулибин... :)))
    > Кстати, веб-сайт на c - это не так уж и смешно. Есть
    > http://www.koanlogic.com/klone/

    Есть ещё хорошая ссылка - http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
    Но только если сама идея вдумчиво подойти к выбору основы для будущего сайта вызывает у людей насмешку и неприятие - зачем давать им какие-то ссылки?
    (кст, за ссылку спасибо ;))

     
  • 4.92, Аноним (-), 14:34, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    В университете веб-сервер на Си писали за одну пару лабораторки Так что нашел ... большой текст свёрнут, показать
     
     
  • 5.94, бедный буратино (ok), 14:46, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я не хвастаюсь, я объясняю И главное - это не вебсервер, это платформа, чтобы м... большой текст свёрнут, показать
     
     
  • 6.99, Аноним (-), 17:58, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >А давайте вы не будете говорить о вещах, в которых не понимаете,

    Начни с себя.

     
     
  • 7.114, бедный буратино (ok), 04:43, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> А давайте вы не будете говорить о вещах, в которых не понимаете,
    > Начни с себя.

    Я могу себе позволить

     
     
  • 8.148, Аноним (-), 01:19, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Можешь позволить Ну так начни не помалкивать о вещах в которых не понимаешь ... текст свёрнут, показать
     
  • 6.109, Аноним (-), 00:09, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >И писать на klone - это не проблема. Если нужны ресурсы. Всяко лучше, чем на php.

    Писать на нём одна большая проблема. Где ORM/DAL, где языки разметки вроде markdown, это же банальный компилируемый php код на Си внутри html, вы реально не понимаете почему так делать нельзя? Вы действительно предлагаете это убожество вместо RoR,Django,Web2py,Play?

     
     
  • 7.113, бедный буратино (ok), 04:42, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >>И писать на klone - это не проблема. Если нужны ресурсы. Всяко лучше, чем на php.
    > Писать на нём одна большая проблема. Где ORM/DAL, где языки разметки вроде
    > markdown, это же банальный компилируемый php код на Си внутри html,

    Там нормальные шаблоны. В отличие от php.

    > вы реально не понимаете почему так делать нельзя? Вы действительно предлагаете
    > это убожество вместо RoR,Django,Web2py,Play?

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

     
     
  • 8.147, Аноним (-), 01:18, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Так ты же сам стороник одного решения вот и вперед ... текст свёрнут, показать
     
  • 3.125, Аноним (-), 05:23, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > идёт 200 r/s...

    А нжинкс например спокойно выдаст несколько тысяч r/s :). Так что как вы понимаете, just in case, bottleneck-ом станет ваша питонятина, а вовсе не.


     
     
  • 4.131, бедный буратино (ok), 05:45, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> идёт 200 r/s...
    > А нжинкс например спокойно выдаст несколько тысяч r/s :). Так что как
    > вы понимаете, just in case, bottleneck-ом станет ваша питонятина, а вовсе не.

    А проект на C выдаёт 0 r/s. Потому что не создан, или выкинут по причине "развивать некому".

    А ещё у nginx есть кеширование. А ещё есть статика, которая благодаря силе http идёт отдельными запросами. А ещё есть js. И много других умных слов, которые сами по себе не средства, а только кирпичики, по которому СОЗДАТЕЛЬ СОЗДАЁТ проекты, а технарь может их только перекладывать туда сюда, чтобы выглядело круто, давало крутые цифры, но людям никак не помогало вообще и в принципе.


     
  • 4.135, web (?), 10:00, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    для просвещения невежд:

    https://github.com/aaugustin/django-c10k-demo

    Это тебе на заметку те цифры которые были 3года назад:

    http://developers.facebook.com/blog/post/301/

     
  • 4.140, спец (?), 15:04, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Мда, анонимы-экстрасенсы вышли из отпуска))

    Данное число вместе с подключенной SQL БД, в которой у нас в т.ч длинные транзакции.
    один сервер, под тестом, сейчас идёт наращивание и проработка функционала, и нам было интересно узнать в текущий момент времени, какую нагрузку держит код.

    Поверьте, мы видим под тестом узкие места и это не python.

    PS:
    200r/s - это более 17 000 000 хитов в сутки.

     
  • 2.106, Аноним (-), 20:16, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Охренеть... Это на каком же уровне его производительность сейчас? Всё-таки, похоже, я
    > был прав, когда отказался от зопе/плоне/джанго/что-там-ещё-могло-быть когда выбирал
    > основу для сайта конторы.

    Сдаётся мне твоей конторе это не помогло :) Ибо не то меняли ...

     

  • 1.61, GoTLiuM (ok), 14:52, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    # cat test.py
    b = 0
    for i in range(100):
            for x in range(100):
                    b += i * x
    print "Done"
    # nuitka --exe test.py
    # time ./test.exe
    Done

    real    0m0.064s
    user    0m0.044s
    sys     0m0.020s
    # time python test.py
    Done

    real    0m0.028s
    user    0m0.020s
    sys     0m0.004s

    меняем 100 на 10000 и перезапускаем

    # time ./test.exe
    Done

    real    0m14.777s
    user    0m14.773s
    sys     0m0.000s
    # time python test.py
    Done

    real    0m28.759s
    user    0m28.722s
    sys     0m0.012s

    Отсюда следует, что не всегда оно надо.

     
     
  • 2.62, Мяут (ok), 14:57, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Оно еще и exe-файлы генерит? :)
     
     
  • 3.64, GoTLiuM (ok), 15:08, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    обычный исполняемый бинарник. и да, пример был из под Linux)))
     
  • 3.112, Аноним (-), 00:44, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Оно еще и exe-файлы генерит? :)

    Есть возможность кросскомпиляции при указании опции --windows-target.

     
  • 2.76, pro100master (ok), 11:34, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    оно, может, и не надо, а вот с++, например, надо :)
    $time ./test
    Done

    real    0m0.002s
    user    0m0.000s
    sys     0m0.000s

    $ cat main.cpp
    #include <iostream>

    int main(int argc, char **argv) {
      
        long x, y, b;
      
        b = 0;
        for( x=0; x<10000; x++)
        {
          for( y=0; y<10000; y++)
          {
            b += x * y;
          }
              
        }
        
        std::cout << "Done" << std::endl;
        return 0;
    }


    зы всегда прикалывали такие оторванные от жизни тесты)

     
     
  • 3.101, Аноним (-), 19:32, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    http://en.wikipedia.org/wiki/Vectorization_(parallel_computing)
     
     
  • 4.107, pro100master (ok), 21:53, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Аноним намекает, что как бы есть алгебраическое решение. Зачетно, вики осилил. На самом деле, интеловский компилятор, как и gcc, если это вынести за пределы main(), заменит на константу или число (внезапно), без всякой алгебры и прочего шаманства с циклами. Я же как бы намекнул на оторванный от реальности тест :)
     
  • 3.121, GoTLiuM (ok), 05:17, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >       for( y=0; y<10000; y++)
    >       {
    >         b += x *
    > y;
    >       }
    >     }
    >     std::cout << "Done" << std::endl;
    >     return 0;
    > }
    > зы всегда прикалывали такие оторванные от жизни тесты)

    Лучше сразу на C. А тесты и впрямь прикольные, но результат на лицо:)
    #include<stdio.h>

    int main() {
            int x, y, b = 0;
            for (x = 0; x < 10000; x++) {
                    for (y = 0; y < 10000; y++) {
                            b += x * y;
                    }
            }
            printf("Done");
            return 0;
    }

     
     
  • 4.126, Аноним (-), 05:25, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Лучше сразу на C. А тесты и впрямь прикольные, но результат на лицо:)

    Да, си сделал питона раз так в эн. Хотя нет, эн мало, лучше эм.

     
  • 2.149, Аноним (-), 01:22, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > # cat test.py
    > b = 0
    > for i in range(100):
    >         for x in range(100):
    >            
    >     b += i * x
    > print "Done"

    Даже на таком примере видно, что человек от python далек.

     

  • 1.66, Филипп Филиппович (ok), 15:16, 31/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это может стать одним из очень немногих способов скрыть исходный код на Python. :-)
     
     
  • 2.67, спец (?), 15:33, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    про .pyc видимо не знаем?)
     
     
  • 3.69, all_glory_to_the_hypnotoad (ok), 15:37, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    pyc не скрывает код.
     
     
  • 4.73, Xasd (ok), 16:09, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > pyc не скрывает код.

    :-) вы будуте удивлены, но таки-скрывает.

    если в интернетах существуют программы типа "unpyc", то это ещё не обозначает что они работают (а не просто так занимают место на sourceforge).

    а используя стандартный модуль http://docs.python.org/3/library/marshal.html -- можно прочитать байт-кодный pyc -- но толку от этого будет не сильно больше, чем например дизасемблировать C/C++-программу :-)

     
     
  • 5.85, Филипп Филиппович (ok), 13:17, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    И всё-таки не скрывает, работают декомпиляторы. Uncompyler, во всяком случае, с Python 2.7 вполне справляется. И даже на вполне реальных текстах, а не только на "Hello, world!". Не гарантирую, что всё декомпилируется безукоризненно, но, во всяком случае, визуально код очень и очень похож на исходный. Можете проверить:
    git clone https://github.com/gstarnberger/uncompyle.git
    setup.py там есть, он ставит скрипт uncompiler.py.
    Хотя некоторые декомпиляторы и правда только занимают место на sourceforge.
     
  • 5.108, all_glory_to_the_hypnotoad (ok), 22:35, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    чувак, харэ лить в интернет всякую херню, иди УЧИСЬ. Хотя бы чему-нибудь. Нельзя же на каждую тему писать столько бреда.

    питоновский сорц транслируется в байткод почти один к одному, сравнение  C <-> asm вообще близко не стоит.

     
     
  • 6.127, Аноним (-), 05:27, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > питоновский сорц транслируется в байткод почти один к одному, сравнение  C
    > <-> asm вообще близко не стоит.

    Питонисты как правило вообще ни бум-бум в структуре данных с которыми они имеют дело. То-есть, они обычно вообще не понимают как это фактически представляется. Предсказуемо разложить байтики в памяти или на диске? О, что вы, это рокетсайнс!

     
     
  • 7.129, бедный буратино (ok), 05:41, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Питонисты как правило вообще ни бум-бум в структуре данных с которыми они
    > имеют дело. То-есть, они обычно вообще не понимают как это фактически
    > представляется. Предсказуемо разложить байтики в памяти или на диске? О, что
    > вы, это рокетсайнс!

    А зачем?

    Достаточно понять логику диктов, и то, как они работают - и наступит всемирное счастье, этим можно будет пользоваться. То, что ты знаешь, как лежат в памяти данные, но не знаешь, как работают дикты (как я в детстве), не даёт тебе возможность делать простые вещи просто. И что толку от этого знания? По мне, так знать написание фразы "то есть" это гораздо более важный навык.

    ps. Через pickle я могу даже знать, как эти структуры можно на стене написать, чтобы читалось. :) Шутка.

     
  • 7.132, Филипп Филиппович (ok), 09:07, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    И именно поэтому я не беру в команду питонистов без знания C++. :-)
     
     
  • 8.137, бедный буратино (ok), 12:45, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, вот для бейсбольной команды это действительно важно ... текст свёрнут, показать
     
     
  • 9.139, Филипп Филиппович (ok), 13:23, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У Вас довольно оригинальное восприятие термина команда по умолчанию в контекст... текст свёрнут, показать
     
  • 8.144, Xasd (ok), 00:20, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    это довольно странная ситуация обычно питонисты как раз таки знают C C хотя... текст свёрнут, показать
     
     
  • 9.145, Филипп Филиппович (ok), 14:19, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Верно, что сиплюсплюсники обычно совершенно не умеют писать на Python, если, кон... текст свёрнут, показать
     
  • 3.75, Филипп Филиппович (ok), 16:17, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Попробуйте погуглить, скажем, слова "декомпилятор pyc". Использование .pyc может помочь только в том случае, если поставлена задача помешать простому прямому редактированию.

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

     
  • 2.71, chinarulezzz (ok), 16:02, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Если хочется скрыть код, то легче интегрировать python в Си-проект. А байткод ничего не скрывает, его декомпилировать раз плюнуть.
     
     
  • 3.74, Xasd (ok), 16:12, 31/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А байткод ничего не скрывает, его декомпилировать раз плюнуть.

    например, как? :)

    (и да... не забываем что щаз 2013-год, если вдруг возникнет желание скопипастить совет [путём использования Интернетовской Машины Времени] из далёких времён :))

    см -- #73

     
     
  • 4.86, Филипп Филиппович (ok), 13:18, 01/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Это не соответствует действительности. Uncompyler вполне работоспособен. Во всяком случае, с Python 2.7 он у меня справился нормально. Про Python 3 сказать не могу, если есть желание -- проверьте сами.

    См. #85

     
     
  • 5.111, Аноним (-), 00:42, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Это не соответствует действительности. Uncompyler вполне работоспособен. Во всяком случае,
    > с Python 2.7 он у меня справился нормально. Про Python 3
    > сказать не могу, если есть желание -- проверьте сами.
    > См. #85

    У меня был один китайский проектик на Django под Windows с привязкой к динмаическим библиотекам, хотел перенести его под Linux ибо не гоже винду ставить, так вот все файлы в pyc, python2.6, ниодного рабочего решения для декомпиляции не нашел.

     
     
  • 6.134, Филипп Филиппович (ok), 09:33, 02/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Может, давно было. Может, не повезло -- попались несколько нерабочих решений, а рабочее по случайности не попалось. А может, они чем-то обрабатывали pyc. Там в принципе можно попробовать его помучить, чтобы работоспособность байт-кода сохранилась, а конструкции Python меньше угадывались.
     
     
  • 7.146, Аноним (-), 01:16, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Скажем так: удалось декомпилировать где-то 10%.
    Поиском в гугле и поиском на гитхабе владею.
    Уверен что ничего не применяли.
     
     
  • 8.151, Филипп Филиппович (ok), 15:35, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    И даже ключик -OO Питону не давали - ... текст свёрнут, показать
     

  • 1.98, бедный буратино (ok), 14:58, 01/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    на опеннет в честь профессионального праздника всех наших - новая мулька? Минусы в плюсы превращаются? Откуда у меня сразу и с места +2 и +1? :)
     
  • 1.103, Аноним (-), 20:08, 01/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Норм буратино написал!
     
  • 1.133, Аноним (133), 09:23, 02/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    оно не работает для Python 3.2  Win из-за отстутствия sys.abiflags
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру