Может ли MacRuby / HotCocoa заменить необходимость знать Objective-C?
Я только что открыл для себя MacRuby / HotCocoa, и мне действительно нравится то, что они делают.
По сути, я не принимал во внимание перспективы создания приложений с графическим интерфейсом Cocoa самостоятельно, потому что у меня есть отвращение к тому, чтобы тратить время и силы на изучение еще одного языка на основе C, Objective-C. Я не говорю, что это плохо, только не для меня.
Является ли это случаем сейчас или в вероятном будущем, что кто-то сможет создавать приложения с графическим интерфейсом Cocoa существенного и первоклассного характера с использованием только MacRuby / HotCocoa, полностью игнорируя Objective-C?
(Изменить: настольный Mac, а не iPhone)
6 ответов
Будет чрезвычайно сложно создавать первоклассные приложения через слой перевода. Достаточно сложно получить ту производительность и поведение, которые вам нужны изначально. Я впечатлен подходом MacRuby и особенно впечатлен тем, что они способны управлять такими вещами, как Core Animation (ключевой элемент первоклассных приложений для Mac) и Core Data (что непросто). Я действительно впечатлен их использованием более идиоматического Ruby, а не безобразия RubyCocoa. Но есть причины, по которым Apple "преуменьшает" (как они это называли) свои многоязычные связи в Java, Ruby, Python и т. Д. Достаточно сложно написать этот материал на одном языке. Достаточно сложно сделать это правильно, когда вы не проходите через полуподдерживаемый уровень перевода. На практике вам все еще нужно изучить синтаксис ObjC для работы с документацией и всем существующим кодом. На практике вам все равно придется изучать шаблоны ObjC для разработки достойных приложений для Mac.
MacRuby это интересно. Даже будучи опытным программистом ObjC, я мог бы рассмотреть HotCocoa для взлома прототипов и опробования интерфейсов. Но это не та вещь, которую я бы использовал для создания, как вы говорите, "приложений с графическим пользовательским интерфейсом Cocoa существенного и первоклассного характера".
Как разработчики, часть нашей работы - иметь пакет инструментов. Подобно тому, как у хорошего плотника есть несколько различных молотков, плюс монетки, наборы гвоздей, несколько видов квадратов и дюжина других инструментов, программист должен быть знаком с различными языками, парадигмами программирования, платформами и средами. Затем она должна быть в состоянии выбрать правильные инструменты для работы и использовать их эффективно. В случае программирования на Mac правильные инструменты для работы включают Xcode, IB, ObjC и Cocoa. Избегать их - все равно что плотник избегать обрамляющего молотка и квадрата скорости. Они просто часть работы.
"Цель MacRuby - создать полноценные приложения для Mac OS X, которые не жертвуют производительностью, чтобы воспользоваться преимуществами использования Ruby". - МакРуби README
Как говорит Роб, MacRuby - это не "слой перевода". Это Ruby в той же объектной системе, что и Cocoa. С его помощью вы можете создавать "первоклассные" приложения, а также выполнять задачи, которые неудобны для Objective-C.
Будьте осторожны, чтобы не перепутать MacRuby с RubyCocoa. Apple не "извлекла все шаблоны" для MacRuby, потому что они никогда не поставлялись по умолчанию.
Кроме того, интеграция LLVM с платформами Apple растет с каждым выпуском. В следующем выпуске XCode будет использоваться LLVM для расширенного дополнения кода, проверки и компиляции. Если Apple что-то недооценивает, то это GCC.
Можно также отметить, что MacRuby имеет те же ограничения в покрытии API, что и Objective-C: например, для создания аутентифицированных приложений или доступа к цепочке для ключей требуются классы-оболочки для обоих языков.
Можно написать приложение на Ruby, используя Apple Frameworks, которое выглядит как нативное приложение ObjC.
Но не верьте мне на слово, посмотрите здесь примеры таких приложений. Они выглядят и работают достаточно естественным образом, поэтому обычный пользователь не может отличить нативный Ruby от нативного ObjC.
Я потратил некоторое время на RubyCocoa, но что заставило меня взглянуть на Obj-C, так это то, что в итоге вся документация по Какао и другим фреймворкам была написана в синтаксисе Obj-C. Само по себе Obj-C не очень большой язык IMO, и он не должен занимать много времени, если у вас есть некоторый опыт работы с каким-либо другим языком на основе C и ООП. Что довольно велико, так это то, что фрейм работает, Какао и т. Д. И, по крайней мере, с rubyCocoa вам все равно придется изучать фреймворки. Кроме того, мне трудно поверить, что такой язык сценариев, как Ruby, может дать такую же производительность, как и скомпилированный язык Си.
Эй, я попробовал это и сдался, потому что, увидев, что это всего лишь замена ObjC, ObjC вдруг показался мне фантастическим языком. Я изучаю ObjC, и мне это нравится.
MacRuby - чей-то любимый проект. Если этот кто-то соберет компилятор, который выбрасывает собственные двоичные файлы из кода Ruby, то вполне вероятно, что он когда-нибудь получит некоторые успехи. Если они просто продолжат делать то, что делают сейчас, то нет, он останется нишевым продуктом до тех пор, пока кто-нибудь не уйдет или не будет уволен и не похоронит свою работу вместе с привязками Java Cocoa и WebObjects.