The OpenNET Project / Index page

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

Inlinec - новый способ использования Си-кода в Python-скриптах

03.02.2020 22:05

Проектом inlinec предложен новый способ inline-интеграции кода на языке Си в скрипты на языке Python. Функции на языке Си определяются непосредственно в одном файле с кодом на языке Python, выделяясь декоратором "@inlinec". Сводный скрипт выполняется как есть интерпретатором сpython и разбирается с использованием предоставляемого в Python механизма кодеков, дающего возможность подключить парсер для преобразования скрипта перед его разбором интерпретатором (как правило, модуль codecs применяется для прозрачной перекодировки текста, но позволяет и произвольным образом трансформировать содержимое скрипта).

Парсер подключается в виде модуля ("from inlinec import inlinec"), который выполняет первичную обработку и на лету переводит определения Си-функций, выделенных при помощи аннотаций @inlinec, в ctypes-обвязки и заменяет тело Си-функции на вызов этих обвязок. После подобного преобразования интерпретатор Python получает уже корректный преобразованный исходный текст скрипта, Си-функции в котором вызываются при помощи ctypes. Похожий метод также применяется в проекте Pyxl4, который позволяет перемешивать в одном файле HTML и Python-код.


   # coding: inlinec
   from inlinec import inlinec

   @inlinec
   def test():
       #include<stdio.h>
       void test() {
           printf("Hello, world");
       }

Разработка пока преподносится как экспериментальный прототип, в котором отмечаются такие недоработки, как отсутствие поддержки передачи в функцию указателей (кроме строк), необходимость запуска "gcc -E" для препроцессинга кода, сохранение промежуточных *.so, *.o и *.c файлов в текущем каталоге, отсутствие кеширования преобразованного варианта и выполнение лишних стадий разбора (большие задержки при каждом запуске).

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Релиз PyPy 7.1, реализации Python, написанной на языке Python
  3. OpenNews: Доступен компилятор Kotlin/Native 0.6
  4. OpenNews: Релиз JPype 0.7, библиотеки для доступа к Java-классам из Python
  5. OpenNews: Релиз 19.3.0 виртуальной машины GraalVM и реализаций Python, JavaScript, Ruby и R на её основе
  6. OpenNews: Выпуск компилятора Nuitka 0.6.6. Прекращение поддержки Python 2.7 перенесено на апрель
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52306-python
Ключевые слова: python, gcc, parser, ctypes
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (135) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, лысый бубен (?), 22:36, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +45 +/
    Наконец в питон добавили фигурные скобки)
     
     
  • 2.45, Аноним (-), 08:25, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если еще все остальное выкинуть и сделать компилируемым... :)))
     
     
  • 3.66, Аноним (66), 11:33, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Т.е. оставить одни фигурные скобки? Получится что-то отдалённо напоминающее Брейнфак.
     
     
  • 4.91, Аноним (91), 15:46, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это будет фигурный Lisp.)
     
  • 2.86, Глеб Кузьмин (?), 14:31, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так фигурные скобки всегда там были. Просто их можно не использовать.
     
     
  • 3.104, Аноним (104), 22:07, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Че ты несешь?
     
     
  • 4.129, онаным (?), 14:34, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    #{
      print("Hello world!")
    #}

    вы просто не знали как их использовать

     
     
  • 5.131, Аноним (-), 16:51, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Какой же это си? Как максимум яваскрипт какой-то.
     
  • 2.112, анонимно (?), 12:00, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В пайтоне есть фигурные скобки.
    Это множества и словари.
     
  • 2.140, blzz (?), 11:48, 07/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    import bython
    и пользуйся фигурными операторными скобками сколько влезет
     

  • 1.2, даконечно (?), 22:39, 03/02/2020 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +2 +/
     

  • 1.3, Аноним (3), 22:40, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Выглядит впечатляюще, и код довольно симпатично будет смотреться. А то писать биндинги к C не всегда так уж просто. Жду такое в стандартном CPython 3.10 с кэшированием и -O3 :)
     
     
  • 2.71, RomanCh (ok), 12:20, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Да изучите наконец уже GoLang. Он же специально для пыхтонистов продвигается как замена. В нём на С можно нативно писать прямо в файле с Go кодом. И это давно уже не в стадии экспериментов, и без ограничений вида "низя передать указатели"
     
     
  • 3.76, Аноним (76), 13:17, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    lol no generics
     
     
  • 4.84, Аноним (84), 14:12, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А что, в python они есть?
    В любом случае, когда из него GIL выпилят, тогда и приходи лолкать.
     
     
  • 5.106, Аноним (-), 22:31, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    зачем его выпиливать? про gil в python любят рассуждать те, кто не понимает, зачем он нужен, не говоря уже о том, зачем он не нужен
     
  • 3.87, Глеб Кузьмин (?), 14:33, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Golang к python относится никак.
    Это вообще разные языки для разных задач.
     
     
  • 4.88, RomanCh (ok), 14:50, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен, на GoLang можно нормальный код писать не надрывая мозг и машину.

    А на пыхтоне только тормозные жрущие поделия на костылях заложенных by design в структуру языка.

    Но таки вы почитайте, что GoLang форсился в своё время именно как ЯП, на который можно пересадить пострадавших мозгом от пыхтона.

     
     
  • 5.95, Анонимкос (?), 17:51, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мощнейшая аргументация. Вы так говорите, как будто Го сам код генерит за разраба. Бред полнейший, точно также надо писать приседать, отлаживать, преодолевать Гоупроблемы. Очередная сферическая серебрянная пуля от анонимных адептов.

    Интересно другое. Вам оно лично зачем, чтобы кто-то бросал знакомый рабочий инструмент и пересаживался на непонятный велосипед? Вот прям все сидят питон разрабы(и не только) и плачут от мук, ждут когда же их позовут на Го, что за бред. Прекратите рассказывать о Го то, чем он не является.

     
     
  • 6.98, RomanCh (ok), 18:58, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Вы так говорите, как будто Го сам код генерит за разраба.

    Нет, он просто не позволяет так ловко стрелять себе сразу в обе ноги, как это делает пыхтон. Ну и ещё приятная мелочь - работает на порядки быстрее и экономичней. И в конце концов - на Це можно писать прямо внутри.

    > Вот прям все сидят питон разрабы(и не только) и плачут от мук,

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

     
     
  • 7.102, Аноним (-), 21:45, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Нее, дорогой мой аноним. Страдают не пыхтон-пострадавшие, у них-то мозг уже отдавлен и потому не болит. Страдают те, кто их поделия на проде вынуждены использовать и/или поддерживать.

    давай пример, трепло

     
     
  • 8.108, RomanCh (ok), 22:46, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Трепло тебе анонимчик, пусть примеры и показывает И да пребудет с тобой пыхтон ... текст свёрнут, показать
     
     
  • 9.109, Аноним (109), 07:22, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    как и ожидалось, ни один свой высер не можешь подтвердить это ты про себя, что ... текст свёрнут, показать
     
  • 7.105, Анонимко (?), 22:15, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Если ты себе отстрелил 2 ноги на Питоне, то к Си лучше не прикасаться.

    Все твои фразы говорят лишь о твоем, похоже, невысоком техническом уровне.

    Го можно сравнивать с нодой, но никак не с Питоном у которого сфера применения гораздо шире.

     
     
  • 8.107, RomanCh (ok), 22:44, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Бедняжко пыхтонист, знает что на ужасном це-языке страшные указатели и буфера, к... большой текст свёрнут, показать
     
     
  • 9.115, Анонимкос (?), 13:55, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Знатно тебя бомбит Языки я сравнивал по сфере применения, Го в основном это веб... текст свёрнут, показать
     
     
  • 10.117, RomanCh (ok), 14:44, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Та не, дорогой анонимчик Меня не бомбит, я тут пишу примерно раз в полгода, ког... большой текст свёрнут, показать
     
     
  • 11.118, Аноним (-), 15:00, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    имя, сестра, имя то есть примеры, пожалуйста, трепло, у меня опыт ровно обра... текст свёрнут, показать
     
     
  • 12.120, RomanCh (ok), 15:11, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Мощно Так как метод убедить вас не получится, потому сразу перейду к оскорблен... текст свёрнут, показать
     
     
  • 13.121, Аноним (-), 15:17, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    кому ты нужен, ничтожество я, в отличие от тебя, написал достаточно софта и на ... текст свёрнут, показать
     
     
  • 14.122, Анонимкос (?), 23:05, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Есть типичная статья на Хабре https habr com ru post 282588 гошника, начавша... текст свёрнут, показать
     
  • 3.113, анонимно (?), 12:04, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Питонистам не подходит Golang им во первых тяжело в статической типизации. Ну а во вторых пайтон поддерживает полный ООП, а в Golang ООП очень урезанный.
     
     
  • 4.114, RomanCh (ok), 12:50, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Да, думать приходится как код писать, а не хренак-хренак и в продакшн Как-нибу... большой текст свёрнут, показать
     
     
  • 5.116, Аноним (-), 14:35, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Ну да, ну да. Особо хорошо там с инкапсуляцией приватных членов.

    так-так, и какие проблемы с приватными членами, трепло?

     

  • 1.4, user90 (?), 22:42, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +19 +/
    "Это уже было в Perl", бгг!
     
     
  • 2.28, Доброжелатель (??), 03:17, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ваше Х плохое! Давайте сделаем У! Через некоторое время получается У подобное Х ...
    И так будет с каждым.
    Нужно улучшать имеющееся, а не тратить время на изобретение(людям хочется Си подобного синтаксиса! и вот он блин ...)
     

  • 1.6, btmn (?), 22:49, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    присобачьте еще несколько языков. Си будет одиноко
     
  • 1.7, SkyNet (??), 22:51, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    Круто! А теперь уберём обёртку из питона и будет всем счастье!
     
     
  • 2.68, Аноним (66), 11:39, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не будет, в C нет классов. Ну разве что ещё и C++ прикрутить.
     
     
  • 3.73, Аноним (73), 12:54, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В C есть структуры, это те же классы, но без пространств имён внутри.
     
     
  • 4.81, Урри (?), 13:27, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    пространства имен внутри при желании легко симулируются макросами.
    хотя на самом деле они банально не нужны.
     

  • 1.8, Аноним (8), 23:00, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Пихон и его стремление "ускориться" и "воспользоваться преимуществами си" -- это как девушка "с широкой костью", которая отчаянно пытается похудеть, но ничего не выходит. Да что там, если продолжать аналогию и вспомнить про то, что даже сам создатель пихона, работая в дропбоксе, так и не сумел "ускорить" свое детище, то в случае с девушкой получится, что создавший ее Господь Бог тоже сдался и прекратил всякие попытки ее прохудить.
     
     
  • 2.10, Аноним (-), 23:07, 03/02/2020 Скрыто ботом-модератором     [к модератору]
  • –8 +/
     
     
  • 3.35, Анонимун (?), 05:54, 04/02/2020 Скрыто ботом-модератором     [к модератору]
  • +7 +/
     
  • 2.11, Тот самый Аноним (?), 23:09, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –9 +/
    Вот объясни это тем, кто использует питон для высокнагруженных систем, например разработчикам нейросетей. Может если вам не хватает производительности питона, то вы что то неправильно делаете? Нет, ну не пиксели же или биты переставляете в двоичных массивах на самом деле. Если же я ошибаюсь и вы используете питон для битовых масок и копирования байтов в оперативной памяти, то вам не кукарекать на каждом углу что "питон отстой", "питон тормознутый" и прочее КоКоко, а вам нужно к врачу срочной.
     
     
  • 3.14, user90 (?), 23:20, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > например разработчикам нейросетей

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

     
  • 3.17, Led (ok), 00:13, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +28 +/
    > Вот объясни это тем, кто использует питон для высокнагруженных систем,

    Так гвидобейсик и делает их высоконагруженными.

     
     
  • 4.49, Аноним (-), 09:04, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    в данной ветке собрался весь цвет опеннетовских икспертов в области машинного обучения
     
     
  • 5.53, Аноним (-), 09:47, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Этот эксперт таки был майнтайнером glibc помнится... :)
     
     
  • 6.64, Аноним (-), 11:13, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    тяжело представить тему, в которой данные организмы не были бы икспертами
     
     
  • 7.132, Аноним (-), 16:54, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > тяжело представить тему, в которой данные организмы не были бы икспертами

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

     
  • 3.51, asdasd (?), 09:17, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > кто использует питон для высокнагруженных систем

    Которые поголовно утыкаются в производительность / расширяемость и переписывают свои сервисы на Go?

    > например разработчикам нейросетей

    Это у тех, у которых весь код написан на C/C++?

     
     
  • 4.61, Аноним (61), 10:54, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> например разработчикам нейросетей
    >Это у тех, у которых весь код написан на C/C++?

    Нет. У них там ещё есть lua

     
  • 2.50, Аноним (-), 09:11, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    некоторым недалеким (такими себя не считающими, разумеется) икспертам кажется, что им удаются аналогии вообще и уместные в частности
     
  • 2.96, Анонимкос (?), 18:13, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это говорит лишь о том, что Питон является востребованным языком и у разрабов есть задача точечно повышать производительность. Ваш лирический текст носит капитанский смысл.
     

  • 1.9, Аноним (9), 23:02, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это явное misuse кодеков и костыль.

    Вместо извращений нужна возможность расширять синтаксис питона питоном.

     
  • 1.12, puntos (?), 23:10, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Теперь от си можно избавляться, так как в питоне есть встроенный си. Что ещё нужно для счастья?
     
     
  • 2.23, nelson (??), 00:44, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >> Теперь от си можно избавляться

    Казалось бы, причём здесь реформа образования...

     
  • 2.27, Аноним (27), 02:40, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Мы знаем о вашей любви к программированию, поэтому встроили вам язык программирования в язык программирования, чтобы вы могли программировать, пока программируете.
     
     
  • 3.29, Аноним (29), 03:17, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слушайте, а ведь так можно и SQL и CSS в код встраивать?
     
     
  • 4.69, Аноним (66), 11:46, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так CSS, наверное, ценен тем, что его можно менять не трогая код?
     
  • 2.40, Аноним (40), 07:39, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Для счастья нужно выбросить питон.
     

  • 1.13, Тот самый Аноним (?), 23:17, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Из новости не понятно, исполняется код скомпилированный в родные инструкции процессора, или это по сути встроенный интерпритотор Си? К стати, проблема передачи указателей из питона в си и обратно, не тривиальная, например я не осилил как из питона вызвать функцию получающую указатель на массив указателей, котороый после вызова меняется. Вот только решение которое я нашёл, например в оффициальной питон обёртке к ГТК, там просто написали Си функцию которорая вызывает требуемую, и возвращает в питон данные в простом формате. Поэтому не удивительно что с указателями у авторов предмета, есть только простые Си-строки.
     
     
  • 2.19, Аноним (19), 00:17, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Из вашего комментария видно что вы не умеете читать ?
     
     
  • 3.32, Аноним (27), 03:23, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А что там можно понять при прочтении? Читателю, незнакомому с питоном, термины кодек и ctypes ничего не говорят, новость написана для питонистов. Не-питонист попросил пояснения - Вы ему нахамили.
     
     
  • 4.57, Аноним (19), 09:59, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вот это "сохранение промежуточных *.so, *.o и *.c файлов в текущем каталоге" не-питонисту тоже ничего неговорит ?
     
     
  • 5.75, Аноним (27), 13:15, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И где там написано, что эти промежуточные o и so получены именно компиляцией и... большой текст свёрнут, показать
     
     
  • 6.103, Главный Ананим (ok), 22:06, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Спасибо тебе, добрый человек!
     
  • 2.82, Урри (?), 13:31, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В C# это решается с помощью "pinned objects". Можешь посмотреть туда.
     

  • 1.15, Аноним (15), 23:48, 03/02/2020 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –6 +/
     

     ....ответы скрыты (2)

  • 1.16, GentooBoy (ok), 23:49, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Забавно думал это давно было. Ruby так умел еще в году этак 2008, а может и раньше. https://github.com/seattlerb/rubyinline
     
  • 1.21, Аноним (21), 00:39, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А ежели я захочу в одном питонячем скрипте и си и хтмл?
     
     
  • 2.30, Аноним (29), 03:18, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ждите from inlinehtml import inlinehtml
     

  • 1.22, Аноним (22), 00:39, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хорошая новость для Сишников. Теперь можно программулину на С обернуть в несколько строк на Пайтон и считатся модным молодежным кодером. Фиг же кто оспорит.
     
     
  • 2.25, axredneck (?), 01:22, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь можно в одной программулине оба языка использовать. Иногда такое надо.
     
     
  • 3.26, имя_ (?), 02:31, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    man ffi
     
     
  • 4.58, Анонимус2 (?), 10:05, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    С этим вашим ffi приходится ещё тащить всякое уродство в виде мейкфайлов, configure и прочего. То что люди показывают что без всего этого можно обойтись - очень хорошо.
     
     
  • 5.62, CrazyAlex (?), 11:09, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С одной стороны да, а с другой - это "уродство" не просто так придумали, а для борьбы с несовместимостями платформ, конфигурирования, подключения библиотек и так далее. Что всё равно понадобится, скорее всего. Но для проствх случаев - отличный подход.

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

     

  • 1.24, axredneck (?), 01:21, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Отлично! Теперь буду скрипты на сях писать.
     
     
  • 2.54, Аноним (-), 09:49, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что раньше то мешало? Tcc даже пример приводил как это делать. Без всяких пихонов :)
     

  • 1.31, Аноним (29), 03:19, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не совсем разобрался, а вызовы из Python происходят из основного потока или используется какой-то вариант ThreadPool? Не возникнет ли проблем с реентерабельностью и потокобезопастность в данных C подкладках?
     
     
  • 2.33, Аноним (33), 05:06, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А в чём проблема? Питон однопоточный же в любом случае. Если отключишь гил, делай как захочешь, но это придётся в сишном коде реализовывать.
     
     
  • 3.39, анононимс (?), 07:28, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Пихон поддерживает экспериментально subinterpreters
     

  • 1.34, Анончик (?), 05:34, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Судя по комментариям либо программисты на питоне обладают специфический чувством юмора либо большая часть из них не ту профессию выбрала.
     
     
  • 2.37, Аноним (37), 07:01, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    код разделённый отступами притягивает особенных
     

  • 1.36, Аноним (37), 07:00, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    есть более лучший способ:
    # ln -sf /usr/bin/gcc /usr/bin/python
     
     
  • 2.70, Аноним (66), 11:53, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    # ln -sf /usr/bin/g++ /usr/bin/python ближе к телу Python
     

  • 1.38, Аноним (38), 07:26, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Если мне не изменяет память, то пайтон является основным инструментом для непрограммистов.
     
     
  • 2.41, Аноним (61), 08:08, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У непрограммистов основные инструменты - Word и Excel
     
     
  • 3.55, Аноним (-), 09:50, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так их vbscript как раз для примерно той же аудитории что и питон.
     
     
  • 4.60, nox. (?), 10:45, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну так их vbscript как раз для примерно той же аудитории что и питон.

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

     
     
  • 5.99, Сишник (?), 19:10, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ты нормальный?
     
  • 2.47, Аноним (-), 08:49, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Если мне не изменяет память

    память вам ещё как изменяет...

    https://www.opennet.ru/openforum/vsluhforumID3/118875.html#23

     
     
  • 3.56, Аноним (-), 09:51, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Гвидо просто сделал несколько опечаток в слове "вебмакака". Ну и он допрограмился до того что сбежал с должности BDFL. Видимо, настолько ускорился что превысил скорость света, не иначе.
     
     
  • 4.59, Аноним (-), 10:38, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > вебмакака

    Вебмакака - термин, который не привязан к конкретному языку. Это "состояние души". Например, в российских конторах полно макак, которые пишут отвратительный код на C или Java.

     
     
  • 5.133, Аноним (-), 16:57, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На си писать отвратительный код - неудобно и чревато. А на питоне отвратительный код повсеместно. Вон там в соседней новости какие-то тела размахивают чудом где код и конфигурация вперемешку. Найти сишника который бы так же делал наверное трудно даже в РФ.
     
  • 2.67, Аноним (67), 11:35, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сколько ошибок в слове "1С"
     

  • 1.42, corvuscor (ok), 08:09, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ИМХО, малополезная вещь, синтаксический сахарок.
    Не вижу никакой проблемы писать, юзая ctypes.

    Самая мякотка здесь в преобразовании типов, которое между си и питоном делается ручками по принципу выдалбливания пещеры зубочисткой.
    Что сводит все профиты на нет.

     
  • 1.43, Аноним (43), 08:23, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Извращенцы
    Чем не угодил цВитон
     
  • 1.44, Аноним (44), 08:23, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Ждём inlinerust
     
     
  • 2.100, Аноним (100), 20:45, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, не ждем.
     

  • 1.46, ACCA (ok), 08:44, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Гвидобэйсик дорос до Inline::C. А там есть ещё Inline::Java и Inline::Python. Есть куда расти.

    В своё время с помощью Inline::C ускорил ETL в 30000 раз. Упёрся в 12Gbps SAS и забил на дальнейшую оптимизанцию.

    Вот спрашивается, на что они потратили 30 лет?

     
     
  • 2.52, Печаль (?), 09:29, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На нормальную документацию на разных языках и библиотеки. Оттуда и популярность.
     
     
  • 3.77, Crazy Alex (??), 13:18, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты хотя бы примерно видел объём перловых библиотек? CPAN многие годы совершенно чудовищен в этом плане.

    Что до документации - тоже чепуха. Camel book и наследники прекрасны и спокойно позволяют въехать в язык нуля.

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

     
     
  • 4.78, имя_ (?), 13:24, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >делался умным для умных

    ой, кто это тут у нас: неужели илитка?

     
     
  • 5.80, Урри (?), 13:26, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, он просто умный. И я тоже умный. Это позволяет нам, умным, хорошо видеть дураков.
     
     
  • 6.83, имя_ (?), 13:53, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Поражаюсь вашей выдержке: так трудно оставаться аристократом, когда воркуг одно быдло неразумное.
     
     
  • 7.94, илитчик (?), 17:32, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Завидуешь умным? Попробуй читать больше грамотных книг, расширяй кругозор. Развивай критическое мышление, ищи всякие упражнения для мозга. Научишься хоть язвить остроумно.
     
     
  • 8.97, имя_ (?), 18:19, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну, что вы, ваше блаародие, куда мне до господ ... текст свёрнут, показать
     
  • 8.119, Аноним (119), 15:05, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    все перечисленное не делает умным, непонимание этого прекрасно показывает какой ... текст свёрнут, показать
     
  • 8.123, Анонимкос (?), 23:25, 05/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Забивание чердака чужими готовыми решениями и идеями не делает тебя умным Также... текст свёрнут, показать
     
  • 2.63, CrazyAlex (?), 11:12, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На борьбу со скобками... и на нормальные заголовки функций :-)
     

  • 1.65, ManulCat (ok), 11:30, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А когда ASM прикрутят? Без ASM'а очень тяжко кодить в принципе... Хочу ASM в питоне, а то в JS сделали, а здесь нет.
     
     
  • 2.72, Crazy Alex (??), 12:28, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Прочёл сначала как "Когда AST прикрутят"... и что-то в этом есть.
     
  • 2.74, Аноним (73), 13:10, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Так, оно же через gcc работает, а gcc ASM умеет.
     
  • 2.85, Аноним84701 (ok), 14:25, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > А когда ASM прикрутят? Без ASM'а очень тяжко кодить в принципе...

    В 2008, если не раньше - назывался (кто бы мог предположить) - pyasm, причем были разные и от разных авторов.
    pycca - "PyCCA provides compilers for C and x86 assembly" тоже уже лет 6
    MicroPython:
    http://docs.micropython.org/en/v1.9.3/pyboard/pyboard/tutorial/assembler.html
    > MicroPython includes an inline assembler. It allows you to write assembly routines as a Python function, and you can call them as you would a normal Python function.

    В общем, "приходи вчера!".

    > Хочу ASM в питоне, а то в JS сделали, а здесь нет.

     

  • 1.79, Урри (?), 13:24, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Что только не придумают, лишь бы С не изучать.
     
  • 1.89, Аноним (-), 15:29, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а про Rust забыли уже?
     
  • 1.90, Anonim (??), 15:31, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Н вот, на нормальный язык стал похож. А то выглядел, как псевдокод...
     
  • 1.92, Аноним (92), 15:51, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а в это время на swift пишутся проекты для ML, data science.
    пара примеров:
    https://github.com/param087/swiftML
    https://github.com/KarthikRIyer/swiftplot
     
     
  • 2.101, Аноним (100), 20:48, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не пишутся.
     

  • 1.93, Аноним (93), 16:40, 04/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А потом мы возьмем и все напишем на Си :)
     
  • 1.124, Аноним (124), 03:54, 06/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Основную массу времени сижу на англоязычных ресах, после перехода на нашинские-... большой текст свёрнут, показать
     
  • 1.125, Аноним (124), 04:24, 06/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Я просто оставлю это здесь:
    https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/regexr

    На некоторых операциях типа обработки текста, Питон3 уделывает даже Rust, а Go просто в пыль.

    Ещё на операциях типа pdigits, поэтому тупые вскукареки выдают лузеров индустрии.

    в операциях с btree (бинарные деревья) разница между go и питоном почти не будет

    А ещё есть PyPy с JIT-компиляцией, которая уделывает CPython, в общем много чего есть.

     
  • 1.126, Аноним (124), 04:50, 06/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Без сложных задач:
    вот этот код на чистых Сях:
    (сумма в цикле)

    #include <stdio.h>

    int main ()
    {
       long a;
       long sum;
       /* for loop execution */
       for( a = 0; a < 10000000; a++ )
       {
            sum += a;
       }
        printf("sum: %ld\n", sum);
       return 0;
    }


    выполнится в лучшем случае в 3 раза быстрее (что обычное число отставания Go от чистых С в бенчах) чем на Python3 через pypy (при втором запуске)

    sum = 0
    for i in range(10000000):
        sum+=i
    print(sum)


    ^^^
    А выразительность, и краткость листинга, я думаю наглядна, "писакам всего на Сях" :)

     
     
  • 2.127, Аноним (127), 14:03, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну то есть за 4 строчки кода вместо 8 готовы пожертвовать 3x производительности. Ох уж эти пыхтонисты.
     
     
  • 3.128, Аноним (127), 14:03, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И то инклуд, main() и return 0 можно не считать, то есть не 8 даже, а 5.
     
     
  • 4.134, Аноним (-), 16:59, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > И то инклуд, main() и return 0 можно не считать, то есть
    > не 8 даже, а 5.

    К тому же на инклуд можно забить, если уж програмить с качеством как у питонистов. И фигурные скобки в for лишние, однако.

     
  • 3.139, Аноним (124), 21:44, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    x3 это вообще среднее отставание golang от C на многих бенчах. А уж асму то сколько "иксов" слили и подумать страшно.
     
  • 2.136, InuYasha (?), 20:18, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    у тебя ошибка в коде и рандомный результат.

    {
        long sum = 0;
        for (long a = 0; a < 10000000; a++)
            sum += a;
        printf("sum: %ld\n", sum);
    }

     
     
  • 3.137, Аноним84701 (ok), 21:02, 06/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > у тебя ошибка в коде и рандомный результат.
    > {
    >     long sum = 0;
    >     for (long a = 0; a < 10000000;
    > a++)
    >         sum += a;
    >     printf("sum: %ld\n", sum);
    > }

    Результат по-любому "рандомный", т.к. будет вычислен во время компиляции (начиная с -O1) и в итоге "замерять" будут время старта и вывода константы:

    echo 'long foo(void) {long sum = 0; for (long a = 0; a < 10000000; a++) sum += a;return sum;}'|gcc -O2 -S -x c - -o -
    foo:
    .LFB0:
    .cfi_startproc
    movabsq $49999995000000, %rax
    ret
    .cfi_endproc


    Ну и вообще, пока горячие парни опеннета упорно сравнивают длин^W разм^W количество скобок-строк, однострочник на awk (вообще без скобок и отступов) делает их, как стоячих – что по скорости, что по минимализму 😎 *gg*



    echo 10050000000000000000|time gawk '$0=$1*($1-1)/2'
    50501249999999996460144636159871418368
    gawk '$0=$1*($1-1)/2'  0,00s user 0,01s system 80% cpu 0,006 total



     

  • 1.135, InuYasha (?), 20:00, 06/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    // Автор "хитрец" - разбросал всё что мог по отдельным строчкам
    int main()
    {
        long a, sum;
        for (a = 0; a < 10000000; a++)
            sum += a;
        printf("sum: %ld\n", sum);
        return 0;
    }
     

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



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

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