LINUX.ORG.RU

Трансляторы языков. Python-->Cpp. Есть такое?


0

1

Я вот тут задумался, питон - позволяет создавать приложения гораздо быстрее, чем на плюсах. Но так же питон и выполняет созданные приложения гораздо медленнее чем плюсы. И, учитывая, что код питона «идеально» структурирован - то былобы не плохо иметь транслятер - питон-->плюсы, чтобы после быстрой разработки и отладки проги на питоне взять и перегенирировать весь код в плюсы и наслаждаться быстрой скоростью работы.

★★★★★

Ответ на: комментарий от ugoday

Осталось подумать и догадаться, что «уровень» и C++, и CL зависит от того, кто, каким образом и с какой целью пишет.

balodja ★★★
()
Ответ на: комментарий от balodja

Факт остаётся фактом, большинство С++-программ состоит из плясок с памятью и указателями, тогда как КЛ-проги, в подавляющем большинстве случаев, написаны на гораздо более высоком уровне. И то, что теоретически это могло бы быть и не так, факта этого не отменяет. Смирись.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

> большинство С++-программ состоит из плясок с памятью и указателями

Вообще-то, это не так. Уже лет 15 как не так.

archimag ★★★
()
Ответ на: комментарий от archimag

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

Хотя теоретически ты прав.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

У меня совершенно другой опыт использования С++.

archimag ★★★
()
Ответ на: комментарий от ugoday

вот только на темплейты не гоним, ога? они на каждом шагу в этих наших stl, boost и qt встречаются

anonymous
()
Ответ на: комментарий от ugoday

>> У тебя нерепрезентативная выборка.

возможно. Но другой у меня нет.

Ну так и говори «я ниасилел». Все поймут и простят.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

> А я и не асиливал, бо не С++ программист ни разу.

Ну так и не бросайся словами вроде «на практике».

Но иногда натыкаюсь на С++ исходники

иногда

Вот-вот.

tailgunner ★★★★★
()
Ответ на: комментарий от balodja

В смысле? Сперва добейся? Или что?

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

Каким боком?

Таким что байткод

man stl, man boost

итересно как будет выглядет примерно такое

dict = {"trololo": {"name": "trol", "value": ([[1,2,3],["a","b","c"],[1,"a",2],["b",3,"c"]],[1,2,3])}}

expelled ★★
()
Ответ на: комментарий от ugoday

> Осталось понять что за масоны скрывают от меня высокоуровневые С++ исходники.

А ты их просто не ищешь - видно, они тебе не нужны. А так - Monotone, LLVM, Chrome... тысячи их.

tailgunner ★★★★★
()
Ответ на: комментарий от ugoday

>Откуда такие сведения?

скобки считать сложнее, чем пробелы

KRoN73 ★★★★★
()
Ответ на: комментарий от expelled

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

Ну? Ну сложно. Ну долго. Здесь речь о том, можно ли за два дня написать такой транслятор?

Таким что байткод

Байткод. Круто, и что? Тут где-то спрятан транслятор из питона в плюсы?

итересно как будет выглядет примерно такое (...)

Все-таки месье стоит почаще читать посты, на которые он отвечает. Там, чуть выше, про PyObject было.

balodja ★★★
()
Ответ на: комментарий от balodja

единство кода и данных даёт куда более высокоуровневую абстракцию над данными, чем в C++.

зависит от того, кто, каким образом и с какой целью пишет.

ты мне напоминаешь одного знакомого, который всё пишет на с++. Он тоже о всём имеет критичное мнение, ничего не попробывав. Ден?

pseudo-cat ★★★
()
Ответ на: комментарий от pseudo-cat

> единство кода и данных даёт куда более высокоуровневую абстракцию над данными, чем в C++.

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

ты мне напоминаешь одного знакомого, который всё пишет на с++. Он тоже о всём имеет критичное мнение, ничего не попробывав. Ден?

Мимо. /me писал на с++ только в одном проекте, и совсем немного. В основном использую другие инструменты.

не попробывав

Граммар-наци тебя съест живьем.

balodja ★★★
()
Ответ на: комментарий от balodja

И вообще, поинт моего поста, на который ты отвечаешь, заключался в том, что временами C++ высокоуровневее CL'я, временами конечно наоборот. Зависит от того, кто, зачем и как пишет, да.

При этом ни у C++, ни у CL'я нет какого-то выделенного «уровня». Черт возьми, это языки общего назначения. Они обладают большим количеством «уровней», позволяют «подниматься» и «опускаться», когда это необходимо программисту. Неужели это так сложно понять?

balodja ★★★
()
Ответ на: комментарий от balodja

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

зачем _тебе_ это нужно.

Из мною используемого -
- удобно при построении кода макросами.
- при рантайм-описании поведения элементов, с которыми оперировала прога, автоматического анализа, изменения и дополнения этого описания(попробуйте такое на с++ если поведение нельзя или сожно заранее описать конечным набором действий =)). Поведение, естессно - данные, вводимые пользователем в виде кода на лиспе(вернее dsl, написанного на лиспе).

pseudo-cat ★★★
()
Ответ на: комментарий от balodja

Неужели это так сложно понять?

ну если на одном это делать намного проще чем на другом, разве этого не достаточно для любого алгоритма классификации?)

pseudo-cat ★★★
()
Ответ на: комментарий от Siado

воходные данные<#1=список-термов<#1#>> ---> добавление, к примеру, после каждого терма, возвращающего null экцепшена(да, прямо в код!) ---> eval ---> профит

или вам именно код нужен?

pseudo-cat ★★★
()
Ответ на: комментарий от lazyklimm

а чего такой кастрированный?

В конце концов AI и компиляторы не каждый день пишут. Для повседневного быдлогокдинга много не нужно. Потому и кастрированный

dizza ★★★★★
()
Ответ на: комментарий от pseudo-cat

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

Да и не дает «простота смены уровня» право говорить о том, что «у языка более высокий уровень». Язык(какой-нибудь) может вообще не позволять «менять уровень», и это его не делает высокоуровневым или низкоуровневым. Поэтому «простота смены уровня» не гарантирует ничего.

balodja ★★★
()
Ответ на: комментарий от balodja

Зависит от программиста, его привычек, его умений, его знаний, его настроения и еще миллиона факторов.

только от *привычек, его умений, его знаний* и, если ему не хватает чего-то из перечисленного, то это не оправдывает его решения при реализации

не дает «простота смены уровня» право говорить о том, что «у языка более высокий уровень»

на Си тоже можно поднять уровень до лиспа, безусловно, только сначала прийдётся написать интерпритатор лиспа. Всего-то. А так, да, «простота смены уровня» ничего не значит)

pseudo-cat ★★★
()
Ответ на: комментарий от pseudo-cat

> на Си тоже можно поднять уровень до лиспа, безусловно, только сначала прийдётся написать интерпритатор лиспа

Да, Тьюринг-полнота, она такая :)

balodja ★★★
()
Ответ на: комментарий от dizza

ну хз, вон у меня знакомый давеча очень сожалел о одной вещи, которая на лиспе релизовывалась макросом в 3-4 строчки. Ни с каким AI дел не имеет, насколько знаю.

lazyklimm ★★★★★
()
Ответ на: комментарий от pseudo-cat

> при рантайм-описании поведения элементов, с которыми оперировала прога, автоматического анализа, изменения и дополнения этого описания

Гениально, епт. Сразу чувствуется, что человек не фигней занимается.

tailgunner ★★★★★
()
Ответ на: комментарий от balodja

>Ну вот такой, звезд с неба не хватает, зато на нем легко писать.

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

p.s. это моё дилетантское мнение, я его никому не навязываю

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Ну всякое бывает. Но все это мелочи.

dizza ★★★★★
()
Ответ на: комментарий от pseudo-cat

>или вам именно код нужен?

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

ну или более простой пример.

Siado ★★★★★
() автор топика
Ответ на: комментарий от lazyklimm

> если за скобочками видеть сам язык - на нём писать врядли сложнее, чем на питоне

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

balodja ★★★
()
Ответ на: комментарий от balodja

даже не знаю :)

Ему хотелось чтобы «к синтаксису объявления функции был добавлен синтаксис отлова исключений»

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

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

balodja ★★★
()
Ответ на: комментарий от balodja

> Питон в этом плане далеко обходит CL

Не совсем понял в каком.

Поэтому писать на нем проще.


Поскольку я достаточно много писал на Python, то могу смело утверждать, что нет.

archimag ★★★
()
Ответ на: комментарий от balodja

> Вам писать на CL проще, чем на любом другом языке?

Ещё мне очень нравится JavaScript, угу ;)

archimag ★★★
()
Ответ на: комментарий от balodja

> Я сегодня сама проницательность

ты сегодня сама толщина

korvin_ ★★★★★
()
Ответ на: комментарий от Siado

это пример просто на алгоритм. можно конечно подумать куда можно прикрутить метапрограмминг в этом случае, но это будет не естественно.

Есть ситуации, где такие решения сами напришиваются, к примеру из моего опыта(скудного - я в программировании около 2х лет) - имитация работы, утрированно говоря, электрических цифровых логических схем, когда описание логики некоторой сущности может дополняться пользователем и, анализируясь программой(как раз таки используя код это сущности как данные по которым ведётся анализ) - модефицироваться. На C# я для этого пытался составить дополнительный формат данных, но забросил.

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

pseudo-cat ★★★
()

Unlanden Swallow, реализация питона на LLVM. Упор на то, что это «правильный питон», с динамическими типами, аннотациями и т.п. рантайм фичами

Vala/Genie wiki Вала — язык над объектной моделью GObject, транслируется в C из 2х базовых синтаксисов: Vala (синтаксис C#) и Genie (cинтаксис Питона) Есть Батарейки.

Delight — идея аналогичная Genie/Vala, но реализация транслятора на языке D. Трансляция в язык D, прозрачное взаимодейстие с D (и соответственно, с Си тоже). Батареек мало, что-то можно брать из D.

Brace, язык вроде Питона, транслируемый в Си

OOC HN  — язык, транслируемый в Си. По синтаксису нечто среднее между Io, Google Go и Питоном. Есть Батарейки.

Nimrod, язык, транслируемый в Си. Нечто вроде питона по синтаксису, прозрачная линковка/интеграция с Си. Есть макросы, AST макросы. Есть Батарейки.

anonymous
()

на тему транслятора питон -> си. Сильно зависит от того, что именно тебе нужно от питона.
Если нужно сохранить семантику питона, и его рантайм фишки — то unlanden swallow/llvm, CPython.
Если от питона нужен только синтаксис, можно взять другие языки, и рантайм написать самому.

anonymous
()
Ответ на: комментарий от anonymous

ещё есть много всяких питоноподобных синтаксисов в туториалах по компиляторам. Например, в LLVM Tutorial учебный язык Kaleidoscope — почти настоящий питон, естественно, без динамических фишек рантайма, только с точки зрения синтаксиса.
В общем, вопрос такой: что именно от питона тебе нужно? Только синтаксис? Это просто. Схожий по реализации рантайм/динамическое поведение? Это сложнее.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.