Расширение Python и Objective-C - PullRequest
1 голос
/ 19 марта 2010

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

Например, я работаю над множеством программ на Objective-C для взломанных iPhone, которые исправляют другой код, используя функцию method_setImplementation() среды выполнения. Или, в PyObjC, я должен использовать синтаксис UIView.initWithFrame_(), который также довольно ужасен и нечитаем с тем, как структурированы имена методов. В обоих случаях язык не поддерживает это в синтаксисе. Я нашел три основных способа сделать это:

  • Безумные макросы. Взгляните на это "CaptainHook", он делает то, что я ищу в удобном для использования виде, но это не совсем чистый и является основным взломать.
  • Там также "Логос", который реализует очень хороший синтаксис, но написанный на Perl парсинг моего кода с тонна регулярных выражений. это пугает меня. Мне нравится идея добавления % hookName ClassName, но не с помощью регулярные выражения для разбора C или Objective-C.
  • Наконец, есть Cycript. Это расширение для JavaScript, который взаимодействует с Objective-C время выполнения и позволяет использовать Код стиля Objective-C в вашем JavaScript, и введите это в другие процессы. Это скорее всего самый чистый, так как он на самом деле использует парсер для JavaScript, но я не большой поклонник этого языка в целом.

Должен ли и как мне создать расширение для Python и Objective-C, чтобы позволить мне это сделать? Стоит ли писать синтаксический анализатор для моего языка, чтобы преобразовать синтаксис во что-то более приятное, если это только в очень специализированной нише, как эта? Должен ли я просто жить с ужасным синтаксисом перехвата Objective-C по умолчанию или PyObjC?

Ответы [ 2 ]

2 голосов
/ 19 марта 2010

Если у вас нет опыта разработки компиляторов или интерпретаторов, мой ответ - решительное НЕТ, это одна из самых больших проблем в информатике.

Если у вас есть опыт, мой ответ меняется на «это действительно глупая идея».

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

1 голос
/ 19 марта 2010

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

Когда вы видите что-то, что, по вашему мнению, вы можете улучшить, может быть очень заманчиво сказать: Я могу это исправить! и сразу бежать, но в этом случае стоимость, вероятно, выше, чем стоит. Языки программирования, которые не преследуют большей цели, чем несколько чище или чуть более последовательны , как правило, не завоевывают популярность, так как постепенный прогресс в этих областях - это не то, что вам нужно действительно, действительно нужно улучшить процесс создания программного обеспечения. Проекты на непонятных языках домашних животных, как правило, умирают и не завоевывают популярность, поскольку стоимость участия (изучение чьего-либо домашнего языка, который является новым для вас и который не имеет широкой поддержки и документации), слишком высока.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...