2010-03-19 1 views
1

Я поклонник чистого кода. Мне нравятся мои языки, чтобы выразить то, что я пытаюсь сделать, но мне нравится синтаксис, чтобы это отразить.Расширение Python и Objective-C

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

  • Insane macros. Взгляните на это «CaptainHook», он делает то, что я ищет в удобном виде, но он не совсем чист и является крупным взломом.
  • Существует также «Логос», который реализует очень хороший синтаксис, но является написанным на Perl, анализирующим мой код с тонны регулярных выражений. Это пугает меня. Мне нравится идея добавления a% hook ClassName, но не с помощью регулярных выражений для синтаксического анализа C или Objective-C.
  • И, наконец, есть Cycript. Это расширение JavaScript, который интерфейсы с выполнения Objective-C и позволяет использовать Objective-C код стиля в вашем JavaScript, и ввести это в другие процессы. Это, скорее всего, самый чистый, поскольку на самом деле он использует парсер для JavaScript, но я не являюсь огромным поклонником этого языка в целом.

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

+1

Кажется, что это ваш зуд, поэтому решение поцарапать его также похоже на ваше. Нет? – dmckee

+0

Ваш вопрос немного неясен для меня. Вы спрашиваете, нужно ли создавать какой-то пользовательский синтаксический аддон для Python и Objective-C? –

+0

Да, в основном. –

ответ

1

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

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

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

+0

Я видел, что приписывал Бьярне Страуструпу «Есть только два вида языков: одни люди жалуются и те, кого никто не использует». – 2010-03-19 09:49:48

+0

Он признался, что сказал это на http://www2.research.att.com/~bs/bs_faq.html#really-say-that (хотя он отказывается от оригинала). Я очень рад видеть, что в этом посте я повторил еще один из настроений Страуструпа: «Есть более полезные системы, разработанные на языках, которые считаются ужасными, чем на языках, похваливших за то, что они красивы - гораздо больше», –

2

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

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

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

+0

-1 для того, чтобы избежать трудных проблем только потому, что они сложны (весь первый абзац), поскольку это не полезный подход. – 2010-03-19 02:32:37

+2

Существует разница между тем, чтобы избежать трудностей и создать их. – mikerobi

+1

Я согласен с mikerobi: это не случай «избегать трудной проблемы только потому, что ее трудно», но случай «следите! Это * может * быть излишне жестким». –

 Смежные вопросы

  • Нет связанных вопросов^_^