URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 130735
[ Назад ]

Исходное сообщение
"Выпуск Nuitka 1.6, компилятора для языка Python"

Отправлено opennews , 12-Июн-23 12:20 
Доступен  выпуск проекта Nuitka 1.6, развивающего компилятор для трансляции скриптов на языке Python в представление на языке C, которое затем можно скомпилировать в исполняемый файл, использующий libpython для обеспечения максимальной совместимости с CPython (используются штатные средства CPython для управления объектами). Обеспечена полная совместимость с актуальными выпусками Python 2.6, 2.7, 3.3 - 3.11. По сравнению с CPython скомпилированные скрипты демонстрируют в тестах pystone повышение производительности на 335%. Код проекта распространяется под лицензией Apache...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=59280


Содержание

Сообщения в этом обсуждении
"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 12:20 
На С делаем Python , потом libpython чтобы поддерживать представление на С , полученном с компилятором из Python , чтобы сделать совместимость с CPython - шизофазия .

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Неуклюжий танцор , 12-Июн-23 12:34 
На самом деле идея не плохая, хотя бы тем, что доказывает возможность применения автоматического управления жизнью объекта на языках низкого уровня, а вместе с этим таких плюшек как проверка доступа к несуществующему элементу массива, внятный дамп стека при падении и т.п. Хотя конкретно Нуитку использовал когда то у себя, но столкнулся с катастрофическим падением производительности, по сравнению с интерпретатором, и пришлось отказаться от неё, но это было давно и возможно уже не актуально.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 13:09 
Всегда использовал нуитку как способ дистрибуции, а не ускорялку. Никаких супер пупер ускорений не замечал с нуиткой.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 14:17 
Она ощутимо замедляет. Интерпретатор у меня собран с пго и интересными флагами, в итоге в 2 раза быстрее исполняется на ряде задач (6 секунд вместо 12), а сабж мало того что гигабайты блобов в память подгружает, так и исполняет код на скорости дефолтного -O2, если не медленнее. Время запуска каждый раз куда больше, опять же.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 14:39 
> возможность применения автоматического управления жизнью объекта на языках низкого уровня

https://v8.dev/blog/oilpan-library


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено n00by , 13-Июн-23 09:46 
> доказывает возможность применения
> автоматического управления жизнью объекта на языках низкого уровня

Не доказывает, а показывает.
Си - это не "низкий" уровень, а "высокий" (или "средний").
"На ассемблере" тоже можно управлять.


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 15:35 
Вполне себе такая нормальная шизофрения.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено anonymous , 12-Июн-23 20:55 
libpython нужен не для этого. Такое впечатление, что ты вообще не представляешь, о чём говоришь.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Дмитрий , 12-Июн-23 12:28 
Зачем тогда писать на Python? Пишите уж сразу на Си, а то какой-то TypeScript для Си получился...

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 12:30 
На си нет pytorch и остального. Может, ты напишешь?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено GraiT , 12-Июн-23 21:27 
Вообще-то pytorch на C++ написан, а python биндинг...

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 21:42 
Вообще тип того, да. Но это обрекать себя на лишнюю боль непонятно ради чего. А если мне надо spacy/thinc? Поверх tensorflow оно не очень работало тоже, когда  я в прошлый раз интересовался, нужен torch. Я, кстати, не слышал, чтобы торч кто-нибудь использовал без питона, там всё больше тензорфлоу. Но это не замена, слишком разные.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 13:08 
Может ты сделаешь чтобы си работал как интерпретатор? В интерактивном режиме.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 13:57 
root

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 15:58 
может сразу на Julia писать?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено OpenEcho , 12-Июн-23 19:03 
> Может ты сделаешь чтобы си работал как интерпретатор? В интерактивном режиме.

А почему нет, вполне работает

#!/usr/local/bin/tcc -run
#include <stdio.h>
int main() {
   printf("Hello, AnonimoNet!");
   return 0;
}


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 13-Июн-23 11:00 
А теперь сделай так, чтобы:
1. tcc умел вычислять отдельные выражения как gdb.
2. во время работы программы можно было бы заменять функции.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено n00by , 13-Июн-23 15:29 
> 2. во время работы программы можно было бы заменять функции.

Если так сделать, получится другой язык.

5.1.1.2 Translation phases

1 The precedence among the syntax rules of translation is specified by the following phases.

...

8. All external object and function references are resolved. Library components are linked to
satisfy external references to functions and objects not defined in the current translation. All
such translator output is collected into a program image which contains information needed
for execution in its execution environment.


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено _kp , 14-Июн-23 11:15 
Тогда берем gcc, и задача сводится к предыдущей.

-----
#!/bin/sh
tail -n +4 $0 | gcc -Wall -o /tmp/cscript.$$ -x c - && /tmp/cscript.$$ "$@"
ret=$? ; rm -f /tmp/cscript.$$ ; exit $ret

#include <stdio.h>
int main()
{
  printf("Hello world\n");
  return 0;
}

-----

Под Windows погаже выглядит, но быстрее же питонов, сишарпов и яваскриптов. И может всё!
-----
@ECHO OFF
set PATH=d:\Programs\@Develop\codeblocks-17.12mingw\MinGW\bin;d:\usr\bin\;%PATH%
SET ONAME=%TEMP%\tmp_script
rm -f %ONAME%.exe %ONAME%.c %ONAME%.log
tail -n +10 %0 > %ONAME%.c
gcc -Wall -o %ONAME%.exe   %ONAME%.c  2>%ONAME%.log || type %ONAME%.log && pause && exit
%ONAME%.exe  %1 %2 %3 %4 %5 %6 %7 %8 %9
echo ..... && echo "Press key to close" && pause
rm -f %ONAME%.exe %ONAME%.c %ONAME%.log

#include <stdio.h>
int main()
{
  printf("Hello world\n");
  return 0;
}

:)


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Анониссимус , 15-Июн-23 17:30 
Настоящий geek-way. Два чая!

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 13:58 
Зачем вообще писать ни C, когда есть ассемблер. Какой-то TypeScript для ассемблера получился..

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 14:28 
Когда-то я делал программы напрямую в машинных кодах в шестнадцатиричных числах. Приходилось высчитывать смещение каждый раз при изменении программы. В ассемблере это делать гораздо удобнее, компилятор высчитывает сам. Си - это невероятная роскошь, позволяющая делать что угодно.
Пожалуйста, следите за руками: Машинные коды, Ассемблер, Си. Это эволюция.
Дальше пошли не туда...

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 17:05 
А как дальше должна была идти эта эволюция? Очень интересно.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 18:35 
Что-то ближе к естественному языку. Например:
"Прочитать данные из файла/сети, вычислить среднее арифметическое значение, вернуть результат в графическом виде в формате jpg".

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 19:26 
Вот для этого ChatGPT и сделали.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено n00by , 13-Июн-23 09:39 
А Дельфи для чего сделали?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено rshadow , 13-Июн-23 17:16 
perl?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено _kp , 14-Июн-23 11:43 
да, да. Прочитать файл смогли, а разобрать нет. Как глянешь в питоновский код, так там сплошное преобразование двоичных данных в строки и противоестественное жонглирование ими.  А если надо не среднее, а что то посложнее посчитать, то понеслось..
Кстати, задачи подобные примеру, решаются экселем, вообще без велосипедостроения на питонах.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено User , 14-Июн-23 16:16 
Г-ди, спаси нас от автоматизаторов-на-эхеле, а уж с остальным мы как-нибудь сами...
Видел я последствия этого "невелосипедостроения", причем не однократно - в диапазоне от "прибьем книгу гвоздями к источникам данных на файловом сервере по относительным, а местами и абсолютным путям" до "а давайте мы ехель заэмбеддим в качестве репорт-сервера для нашего ПРОДУХТА и съэкономим на BI!" через "а тут мы подцепим pi-datalink, и нимнощька вижлвасика" - равнофигово получалось, если честно. Сейчас просто рефлекторно бью по рукам автоматизаторам-от-сохи, питонисты (даже датасатанистского-я-МАТЕМАТИК-а-не-порограммист!!111-изводу) по сравнению с эхелизаторами прям Ъ-программисты. ЪЪ-даже.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено _kp , 14-Июн-23 16:25 
> Г-ди, спаси нас от автоматизаторов-на-эхеле

Смотря что автоматизировать. Если одноразово по быстрому посчитать/сгенерировать, то уметь это надо.

> ехель заэмбеддим

Это конечно уже маразмы. Ну, меру знать надо. :)


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено User , 14-Июн-23 16:48 
>Смотря что автоматизировать. Если одноразово по быстрому посчитать/сгенерировать, то уметь это надо.

Да как бы уже и... нет? В том же Юпитере делается не сложнее, результат выглядит не хуже. Вот БигБоссам 40+ из ынтырпрайз-ынтырпрайза результат показать там да, безальтернативно, там ехель-головного-моска в терминальной стадии, а для себя - вот на...зачем?
>Это конечно уже маразмы. Ну, меру знать надо. :)

А там learning curve спесфисский. Порог вхождения нулевой, тут легко, тут все еще можно, тут почти-совсем-похоже-ща-загуглю, там вижвалвасик появился - начальству-нужен-ехель - других-молотков-у-нас-для-вас-нет - "Бжемой, как такой ЗВИЗДЕЦ появился?!"


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено BeLord , 13-Июн-23 09:16 
К решению задач,а не миллионный раз переписывать одно и тоже с нулевым кпд.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено n00by , 13-Июн-23 09:45 
Селекция почему-то до сих пор не объявлена лженаукой (если не считать ГМО). При том что окружающая среда за тысячи лет изменилась не столь сильно, как устройства для исполнения кода.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 13-Июн-23 20:08 
Роль селекции в IT сейчас выполняет маркетинг и хайп, а не технические достоинства продукта. По сути это отрицательный отбор, который останавливает, а кое-где и разворачивает эволюцию.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено n00by , 14-Июн-23 05:47 
Из этого следует, что переписывают "не в ту сторону". Но никак не "переписывать не стоит". Вот например различные оптимизации двоичного поиска https://gitflic.ru/project/erthink/bsearch-try

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 18:51 
> Писать что Си надо уметь, а на Питоне любая обезьяна уже через неделю может писать.

И это плюс Питону. А на Си ты и через десять лет будешь память ронять.


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено BeLord , 13-Июн-23 09:21 
Ну смотри, есть софт на С, написан в 2010, в реалтайме с 2014, память на месте, ничего не утекло. Интересно почему так, может потому, что проверки везде стоят, а код не на "отвали" написан?-))

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Прохожий , 13-Июн-23 09:45 
Сколько стоит такой код по сравнению с питонячим? Так отож.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено BeLord , 13-Июн-23 13:30 
> Сколько стоит такой код по сравнению с питонячим? Так отож.

Если говорить про стоимость владения, то ниже, чем на питоне-))) Если говорить про единовременные вложения, то выше.


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено YetAnotherOnanym , 13-Июн-23 21:31 
"Питонокод - дешёвка". А чо, новое слово в питонорхейте.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено User , 13-Июн-23 15:00 
... ну или по тому, что не тестил никто - работает себе конечный автомат на детерминированном наборе данных и работает - ничего интересного, а стоит два ведра рандома на вход отгрузить - и "ой, штайта?!" 100% покрытие проверками чего-нибудь отличного от хеллоуворлда обычно только на opennet'е и существует - где-то по соседству с "настоящими c-шниками"(ТМ)

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 14-Июн-23 04:45 
> Писать что Си надо уметь, а на Питоне любая обезьяна уже через неделю может писать.

Чтобы на питоне хоть что-то эффективно работающее написать, надо освоить довольно увесистую документацию по библиотекам. Без знания реализованных для него структур данных ничего путного не получится. А это уже далеко не неделя. Это на C, имея знания об алгоритмах, можно через неделю что угодно писать.


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено User , 14-Июн-23 11:36 
Ну, я предполагаю, что "имение" "знаний об алгоритмах", позволяющее реализовывать на C алгоритмы и структуры данных с эффективностью уровня "стандартной библиотеки python'а" занимает несколько большее время, нежели ознакомление с этой самой библиотекой - но это конечно же не точно, да?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 13-Июн-23 11:03 
Есть SBCL, в котором именно асмовставки, но утята не любят скобочки.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 13-Июн-23 09:56 
На C нет классов.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 13-Июн-23 19:23 
Вот дорогой аноним, ошибся ты - ООП это парадигма программирования, писать с классами можно и на С, и весьма успешно, просто первый параметр всегда должен быть ссылкой на структуру. На С нет RAII, что было реализовано уже в С++ с его создания. Впрочем RAII реализуется на С макросами - на гитхабе полно и примеров и библиотек.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено n00by , 14-Июн-23 05:57 
struct это class с открытыми членами.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено _kp , 14-Июн-23 11:46 
Ну пиши на С++. Какая разница. Более того в одном проекте можно мешать части на си и с++ как угодно и без лишних телодвижений.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено randomize , 15-Июн-23 14:41 
Значит, синтаксис питона в разы лучше, раз люди готовы так заморачиваться.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено randomize , 15-Июн-23 14:46 
Точнее, писать на нем в целом удобнее, а не один лишь синтаксис.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 13:46 
Кстати, если ограничить типы данных программы, например, использовать только int и float, то транспилятор Python -> С можно написать минут за десять и строк 100-200 кода python, если знать, что и как делать, и для написания boilerplate code использовать ChatGPT. (Необходимо воспользоваться модулем ast для парсинга кода python и ,например, использовать трансформеры из этого модуля.)

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 13:55 
А если выкинуть list, dict, tuple, плюнуть полностью на ООП, еще пару таких мелких упрощений и можно вопросить - зачем нужен питон если есть С?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 14:13 
>А если выкинуть list, dict, tuple ...

1) поддержку list, dict, tuple можно легко добавить. (Необходимость ООП спорный вопрос, при неумелом использовании скорее вред)

>зачем нужен питон если есть С?

2) мне, например, нужно держать свою кодовую базу на одном языке и транспилировть по необходимости в C++/JavaScript/... специальные DSL
3) у питона огромное community и куча кода-библиотек.
Для меня сейчас особенно актуальны модули для тестирования (pytest, unittest, hypothesis)


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 16:28 
Pyston'утый?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено YetAnotherOnanym , 14-Июн-23 13:17 
Если "огромное community" само по себе аргумент, то "огромное community" питонохейтеров - очень весомый повод не кодить на питоне.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено randomize , 16-Июн-23 20:54 
Мне как-то высказал свое фи по поводу питона поддатый кодер на пхп. Как бы намекает...

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено randomize , 16-Июн-23 20:56 
На самом деле, я считаю, что можно нормально писать и на python, и на PHP, и на js. Достаточно вынуть руки из задницы...

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 16:06 
А ты уже написал транслятор со своего языка в Си?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Mail , 12-Июн-23 20:03 
Моя гошка и так хороша для моих целей.

- писать быстро (быстрее чем на питоне)
- тестировать легко
- отлаживать без проблем
- ясно и просто с пакетами
etc

а вы и дальше любите языки мамонта.


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 20:28 
Go такой же язык мамонта, только выплюнутый в мир попозже

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Аноним , 12-Июн-23 21:54 
дубовость на месте или скоро подвезут всяких скобочек?

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Tron is Whistling , 12-Июн-23 22:48 
- гошка
- ясно и просто с пакетами
Понятно, расходимся.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Пряник , 14-Июн-23 09:40 
Писать на Go не быстрее. Python просто завален синтаксическим сахаром. Превращает функцию в генератор одним yield, в одну строку преобразуем кучу списков в один с фильтрацией [list comprehensions], либо в функцию, поменяв лишь скобки на круглые (generator expressions), любую шляпу заворачиваем в декоратор и пихаем везде наглядной строкой @text, превращаем любую функцию в бесконечный поток данных функцией iter, 0b1111, 0o17, 15, 0xF, b'\xde\xad\xbe\xef'.hex() и вообще всё - объект первого порядка и можно пихать в любое место в коде.

Ваш ответ, Go'шники?


"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено User , 14-Июн-23 11:40 
А go'шникам написанное еще и саппортить приходится обычно, а за диабетиками - проще переписать, чем разобраться почему goody-beauty "однострочник на три строки" вывалил стектрейс при попытке запустить его где-то кроме когда-то собранного контейнера. Такое себе.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено randomize , 17-Июн-23 14:17 
Легко запускается то, что написал сам. А со сторонней прогой не всегда все очевидно. Даже собранный бинарь может дать сегфолт, и иди, разбирайся, что ему не нравится. Как по мне, стектрейс лучше - он хотя бы сразу выводит источник проблемы перед глазами.

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено Пряник , 14-Июн-23 09:28 
Ну опять про скорость... Лучше кросскомпиляция под разные системы со всеми зависимостями в одном бинарнике (как в Go).

"Выпуск Nuitka 1.6, компилятора для языка Python"
Отправлено iiiypuk , 14-Июн-23 14:15 
Crystal