Python - Дилемма IronPython

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

a. Вы хотите, чтобы переменная пережила функции, и Вы не хотите иметь глобальную переменную. исключая:

struct pair{
   int val;
   struct pair *next;
}

struct pair* new_pair(int val){
   struct pair* np = malloc(sizeof(struct pair));
   np->val = val;
   np->next = NULL;
   return np;
}

b. Вы хотите динамично выделить память. Наиболее распространенным примером является массив без фиксированной длины:

int *my_special_array;
my_special_array = malloc(sizeof(int) * number_of_element);
for(i=0; i

c. You want to do something REALLY dirty. For example, I would want a struct to represent many kind of data and I don't like union (union looks soooo messy):

struct data{ int data_type; long data_in_mem; }; struct animal{/*something*/}; struct person{/*some other thing*/}; struct animal* read_animal(); struct person* read_person(); /*In main*/ struct data sample; sampe.data_type = input_type; switch(input_type){ case DATA_PERSON: sample.data_in_mem = read_person(); break; case DATA_ANIMAL: sample.data_in_mem = read_animal(); default: printf("Oh hoh! I warn you, that again and I will seg fault your OS"); }

Видят, длинного значения достаточно для содержания ЧЕГО-ЛИБО. Просто не забудьте освобождать его, или Вы будете сожалеть. Это среди моих любимых приемов, чтобы весело провести время в C: D.

Однако обычно, Вы хотели бы избегать своих любимых приемов (T ___ T). Вы повредите свою ОС, рано или поздно при использовании их слишком часто. Пока Вы не используете *выделение и свободный, безопасно сказать, что Вы являетесь все еще девственными, и что код все еще выглядит хорошим.

15
задан denfromufa 10 September 2015 в 07:28
поделиться

5 ответов

1) IronPython и CPython имеют почти идентичный синтаксис языка. Между ними очень небольшая разница. Переход должен быть тривиальным.

2) Библиотеки в IronPython сильно отличаются от CPython. Библиотеки Python немного отстают - довольно много библиотек, доступных для CPython, не будут работать (в настоящее время) в IronPython. Однако IronPython имеет чистый прямой доступ ко всей .NET Framework, а это означает, что он имеет одну из самых обширных библиотек, изначально доступных для него, поэтому во многих отношениях он намного опережает CPython. Некоторые из библиотек numpy / scipy не работают в IronPython, но из-за реализации .NET некоторые функции не нужны, поскольку файл perf. характеристики разные.

3) Доступ к Excel VBA будет проще с помощью IronPython, если вы делаете это из VBA. Если вы пытаетесь автоматизировать Excel, IronPython все еще проще, поскольку у вас есть доступ к первичным сборкам взаимодействия Execl и вы можете напрямую автоматизировать его, используя те же библиотеки, что и C # и VB.NET.

18
ответ дан 1 December 2019 в 01:53
поделиться

Что такое отношения между Реализация Python на C (основная версия с python.org) и IronPython с точки зрения языка совместимость? Это то же самое язык, и я, изучая один, сможет плавно перейти на другой, или это Java для JavaScript?

Тот же язык (на данный момент на уровне 2.5 - IronPython еще не 2.6 AFAIK).

Каков текущий статус Библиотеки IronPython? Сколько он отстает от библиотек CPython? я в основном интересуются numpy / scipy и f2py. Доступны ли они для IronPython? ?

Стандартные библиотеки в сегодняшнем IronPython находятся в отличном состоянии, огромные сторонние расширения, подобные упомянутым вами, далеки от этого. numpy начинает становиться выполнимым благодаря ironclad , но не на уровне производства, поскольку numpy от IronPython (как засвидетельствовано Номер версии 0.5 для Ironclad и т. Д.). scipy огромен, разрастается и переполнен расширениями на C и Fortran: у меня нет личного опыта, но я подозреваю, что менее половины из них будут даже работать, а тем более безупречно, при любой реализации, кроме CPython.

Как лучше всего получить доступ VB из Python и обратно (подключение некоторых библиотек Python к VBA в Excel, если быть точным)?

IronPython должен упростить задачу с помощью .NET, но CPython не так уж далек от реализации COM в win32all .

И последнее, но не менее важное, во что бы то ни стало ознакомьтесь с книгой IronPython в действии - как я говорю каждый раз, когда рекомендую его, я предвзято (из-за того, что был техническим рецензентом для него И по дружбе с одним автором), но я думаю, что объективно это лучшее введение в Python для разработчиков .NET И в то же время лучшее введение в .NET для Pythonistas.

Если вам нужно все scipy (Ничего себе, но это немного » "Человек эпохи Возрождения", ученый-вычислитель! -), CPython - действительно единственный реальный вариант сегодня. Я уверен, что другие большие расширения (скажем, PyQt или Mayavi) находятся в аналогичном состоянии. Для глубокой интеграции с современной Windows однако я думаю, что у IronPython есть преимущество. Для универсального использования CPython может быть лучше (особенно благодаря множеству новых функций в 2.6), , если только вы действительно не хотите использовать много ядер в одном процессе, и в этом случае IronPython (который без GIL) может снова оказаться полезным.

Так или иначе (или даже на JVM через Jython, или в специфических средах через PyPy) Python, безусловно, отличный язык, какую бы реализацию (и) вы ни выбрали для данного приложения! -) Обратите внимание, что вам не нужно придерживаться ОДНОЙ реализации (хотя вы, вероятно, должны выбрать одну ВЕРСИЯ - 2.5 для максимальной совместимости с IronPython, Jython, Google App Engine и т. д .; 2.6, если вы этого не сделаете заботиться о любых вариантах развертывания, кроме «CPython на машине под моим собственным или виртуальным контролем»; -).

Я думаю, что у IronPython есть преимущество. Для универсального использования CPython может быть лучше (особенно благодаря множеству новых функций в 2.6), , если только вы действительно не хотите использовать много ядер в одном процессе, и в этом случае IronPython (без GIL) может снова оказаться полезным.

Так или иначе (или даже на JVM через Jython, или в специфических средах через PyPy) Python, несомненно, отличный язык, какую бы реализацию (и) вы ни выбрали для данного приложения! -) Обратите внимание, что вам не нужно придерживаться ОДНОЙ реализации (хотя вы, вероятно, должны выбрать одну ВЕРСИЯ - 2.5 для максимальной совместимости с IronPython, Jython, Google App Engine и т. д .; 2.6, если вы этого не сделаете заботиться о любых вариантах развертывания, кроме «CPython на машине под моим собственным или виртуальным контролем»; -).

Я думаю, что у IronPython есть преимущество. Для универсального использования CPython может быть лучше (особенно благодаря множеству новых функций в 2.6), , если только вы действительно не хотите использовать много ядер в одном процессе, и в этом случае IronPython (который без GIL) может снова оказаться полезным.

Так или иначе (или даже на JVM через Jython, или в специфических средах через PyPy) Python, безусловно, отличный язык, какую бы реализацию (и) вы ни выбрали для данного приложения! -) Обратите внимание, что вам не нужно придерживаться ОДНОЙ реализации (хотя вы, вероятно, должны выбрать одну ВЕРСИЯ - 2.5 для максимальной совместимости с IronPython, Jython, Google App Engine и т. д .; 2.6, если вы этого не сделаете заботиться о любых вариантах развертывания, кроме «CPython на машине под моим собственным или виртуальным контролем»; -).

11
ответ дан 1 December 2019 в 01:53
поделиться
  1. IronPython version 2.0.2, the current release, supports Python 2.5 syntax. With the next release, 2.6, which is expected sometime over the next month or so (though I'm not sure the team have set a hard release date; here's the beta), they will support Python 2.6 syntax. So, less Java to JavaScript and more Java to J# :-)
  2. All of the libraries that are themselves written in Python work pretty much perfectly. The ones that are written in C are more problematic; there is an open source project called Ironclad (full disclosure: developed and supported by my company), currently at version 0.8.5, which supports numpy pretty well but doesn't cover all of scipy. I don't think we've tested it with f2py. (The version of Ironclad mentioned below by Alex Martelli is over a year old, please avoid that one!)
  3. Calling regular VB.NET from IronPython is pretty easy -- you can instantiate .NET classes and call methods (static or instance) really easily. Calling existing VBA code might be trickier; there are open source projects called Pyinex and XLW that you might want to take a look at. Alternatively, if you want a spreadsheet you can code in Python, then there's always Resolver One (another one from my company... :-)
2
ответ дан 1 December 2019 в 01:53
поделиться

1) Язык, реализованный в CPython и IronPython, один и тот же, или, самое большее, одна или две разные версии. Это совсем не похоже на ситуацию с Java и Javascript, которые являются двумя совершенно разными языками, которым в результате какого-то упрямого маркетингового решения даны похожие имена.

2) Сторонние библиотеки, реализованные на C (такие как numpy), должны быть оценены внимательно. IronPython имеет возможность выполнять расширения C (я забыл название), но есть много подводных камней, поэтому вам нужно проконсультироваться с сопровождающим каждой библиотеки

3) Понятия не имею.

1
ответ дан 1 December 2019 в 01:53
поделиться
  1. CPython реализуется C для соответствующей платформы, такой как Windows, Linux или Unix; IronPython реализован в C # и Windows .Net Framework, поэтому он может работать только на платформе Windows с .Net Framework. Для граммы оба одинаковы. Но нельзя сказать, что это один язык. IronPython может легко использовать .Net Framework при разработке на платформе Windows.
  2. На сегодняшний день 21 июля 2009 г. - выпущен IronPython 2.0.2, наш последний стабильный выпуск IronPython. вы можете обратиться к http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython .
  3. Вы можете получить доступ к VB с помощью функции .Net Framework от IronPython. Итак, если вы хотите освоить IronPython, вам лучше изучить .Net Framework.
0
ответ дан 1 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: