Расширение Python и Objective-C

1

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

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

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

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

  • 1
    Казалось бы, это ваш зуд, поэтому решение поцарапать, похоже, тоже. Нет?
  • 0
    Ваш вопрос немного неясен для меня. Вы спрашиваете, нужно ли вам создавать какие-то специальные синтаксические дополнения для Python и Objective-C?
Показать ещё 3 комментария
Теги:
pyobjc

2 ответа

1
Лучший ответ

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

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

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

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

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

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

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

  • 0
    -1 для избежания сложных проблем только потому, что они сложные (весь первый абзац), так как это бесполезный подход.
  • 2
    Существует разница между избеганием сложных проблем и их созданием.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню