Ruby on Rails против PHP, ведущий к разработке OS X / iPhone - PullRequest
0 голосов
/ 17 февраля 2010

Добрый день. Я дизайнер пользовательского опыта, хорошо владею XHTML и CSS. Я немного поиграл с PHP и JavaScript, но ни в коем случае не доволен ими.

Моя главная цель - разработка программного обеспечения для OS X и iPhone. Мне давали советы по этим темам, но я борюсь с объектно-ориентированным программированием.

Книги, которые у меня есть по разработке Mac, включают в себя: Программирование какао для Mac OS X 3-е издание - Аарон Хиллегасс, Программирование в Objective-C 2.0 - Стивен Кочан, Объектно-ориентированный мыслительный процесс -Matt Weisfeld

Короче говоря, я чувствую, что у меня недостаточно опыта программирования, чтобы заниматься этим в данный момент, поэтому я хотел бы направить свое обучение на веб-технологии. Я немного читал о различиях между Ruby on Rails и PHP. Мой вопрос в том, что будет более полезным для моей конечной цели? Ruby on Rails изначально ориентирован на объект, а PHP - нет.

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

Извиняюсь, если этот пост глуп или удвоен, я застрял.

UPDATE Я следил за курсом PHP всю неделю. Концепции кажутся мне сейчас очень понятными. В середине этой недели я планирую начать ООП-главы видео-тренинга. Я вполне доволен тем, что смогу использовать эти новые знания в области разработки веб-приложений.

Что касается Objective-C, я знаю, что рекомендуется изучать C до достижения Objective-C. Прежде чем я продолжу с книгой Аарона Хиллегаса, я должен нырнуть C? Изучите C , это оптимально для новичка, или вы, опытные разработчики, предпочли бы, чтобы новичок взялся за книгу? Должен ли я все вместе забыть о C, изучить ООП на PHP, как указано выше, и перейти прямо к Objective-C?

Ответы [ 7 ]

2 голосов
/ 26 февраля 2010

О С

вам не понадобится чистый C, если вы действительно не выполняете какие-то передовые вычисления высокой производительности. Платформа Cocoa обеспечивает решение многих общих задач, с которыми вы сталкиваетесь, или, по крайней мере, достаточных инструментов для создания таких решений, не погружаясь в грубый мир низкого уровня C. Как бы мог быть мощен и быстр C, это очень небезопасный язык , это заставит вас писать тонны кода и тратить много времени на отладку.


как уже говорилось, RoR - это фреймворк, а PHP - это язык. Итак, позвольте мне сначала немного рассказать о Ruby, JavaScript, PHP.

рубин

Ruby - замечательный язык. Из упомянутых, это тот, который ближе всего к Objective-C. Как и Objective-C, он использует модель передачи сообщений для вызовов методов. замечательное введение в Ruby онлайн. Я прочитал это через несколько дней и любил это. К сожалению, Ruby довольно медленный и не очень прост в развертывании.

PHP

хорошо ... PHP. Преимущества: PHP чрезвычайно прост в развертывании, что, вероятно, является причиной его успеха. У этого есть большое и активное сообщество, которое построило обширную экосистему. И PHP очень простителен, поэтому для его использования не требуется большого опыта.

Вы, наверное, чувствуете, что должно быть "но". Что ж, вместо того, чтобы вдаваться в подробности, я хотел бы процитировать моего друга, который очень много делает по PHP: «PHP - гнилая плоть среди языков программирования» .

PHP, как и все языки, имеет недостатки. Но в PHP они дошли до того момента, когда он предлагает поведение, которое было придумано сторонниками PHP как «разбивание PHP». Это то, что появляется довольно часто, то есть каждый раз, когда кто-то обсуждает, хорош ли PHP. Как правило, программисты PHP принимают сторону PHP (что является разумным поведением, если вы тщательно продумали свои варианты перед выбором языка), и большинство программистов, которые знают PHP и альтернативу, будут жаловаться много на PHP. Я хочу избежать этого, так как вы можете найти достаточно по этой теме в Google. > Этот <</a> вопрос касается темы в приятной и вежливой форме. Это не охватывает весь предмет.

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

JavaScript

JavaScript также красивый язык. Это не очень далеко от Руби. Его объектная ориентация не такая сильная, как у Ruby, однако она гораздо больше подходит для функциональных подходов , поскольку Ruby немного несовместим с функциями высокого порядка , имеющими несколько не взаимозаменяемых версий их, что все работают немного по-другому. JavaScript тоже прощает, но, может быть, больше, чем должно быть. Прямо сейчас и в обозримом будущем JavaScript очень популярен и используется во все большем количестве областей. С HTML5, CSS3 и WebGL, вы сможете создавать отличные приложения, используя JavaScript. Однако вам всегда придется иметь дело с кросс-браузерными причудами. Кроме того, вы, вероятно, обнаружите, что JavaScript имеет другие ограничения


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

Haxe

Я бы хотел предложить своего кандидата: Haxe .это язык с открытым исходным кодом, который все еще относительно молод и развивается очень быстро.Он кросс-платформенный и может быть скомпилирован для разных платформ.В отличие от любого из предложенных языков (включая Objective-C), Haxe построен на основе очень сильной системы типов, которая оказывается необязательной, но очень поддерживает.Вы можете выводить PHP с помощью Haxe, поэтому вы можете легко развернуть Haxe.Вы также можете вывести JavaScript.Я лично использую это, чтобы предназначаться для Flash Player.Вы можете использовать один единственный язык для множества вещей.Если вы выберете этот язык, не стесняйтесь присоединиться к сообществу .Желательно список рассылки или IRC канал.

ну, надеюсь, это помогло ...

2 голосов
/ 25 февраля 2010

Если у вас уже есть базовые знания Javascript, вам следует продолжить в этом направлении, а не изучать совершенно другой язык, такой как Ruby или PHP. Javascript имеет гораздо больше общего с Objective-C в том, как он используется, чем RoR или PHP.

Серверные языки запускают небольшие программы от начала до конца за доли секунды, тогда как программы Javascript или Objective-C работают в течение неопределенного периода времени. Оба типа программ требуют различного мышления, и объектно-ориентированное программирование имеет гораздо больше смысла, когда у вас есть куча объектов, которые со временем взаимодействуют друг с другом и с которыми может взаимодействовать пользователь. Объекты в PHP - это, в основном, способ организации кода, они мало учат вас взаимодействию с объектами.

Так как, несмотря ни на что, будет определенная кривая обучения, вы также можете погрузиться прямо в Objective-C, но изучение Javascript в первую очередь - лучшая вещь, если вы действительно этого не хотите. Поскольку вы можете поиграть с ним в консоли вашего браузера, он предлагает отличный интерактивный способ обучения. Проблема с Javascript заключается в отсутствии хорошего материала, но Crockford и Mozilla Reference , пожалуй, лучшие места для начала.

Программирование в Javascript обычно означает манипулирование DOM браузера, что является еще одной концепцией, которую вы должны изучить. Это также означает, что нужно иметь дело с особенностями браузера, что лучше всего решать с помощью инфраструктуры / библиотеки Javascript, такой как jQuery, MooTools или Prototype, которая является еще одной технологией.
Чтобы избежать этих дополнительных кривых обучения, вы можете использовать Javascript в куче других сценариев , включая настольные widgets / gadgets . Они очень похожи на приложения мини-Какао с точки зрения взаимодействия с пользователем и могут быть хорошей отправной точкой.

2 голосов
/ 17 февраля 2010

Часть проблемы с пониманием объектно-ориентированного программирования заключается не столько в понимании концепции объектов и классов, сколько в том, как они должны эффективно использоваться. Лучшие стратегии описаны в книге Design Patterns . Хотя эта ссылка является довольно технической, в ней очень подробно рассказывается, как подходить ко многим распространенным ситуациям с точки зрения стратегической разработки программного обеспечения.

Вы можете видеть, что такого рода подход был полностью реализован в Apple iPhone SDK, фреймворке, в значительной степени построенном на работе, проделанной в NeXT.

Хотя Ruby и особенно Ruby on Rails не так сильно склонны к соглашениям о шаблонах проектирования, могут применяться те же принципы.

Если вы готовы принять вызов, это очень полезный справочник.

Для нового разработчика Ruby имеет много преимуществ по сравнению с Objective-C. При интерпретации Ruby очень сложно рухнуть из-за простой ошибки, а интерактивная командная строка является мощным инструментом для быстрого экспериментирования. С другой стороны, возможности отладки Ruby строго ограничены средой Objective-C и XCode. В частности, Ruby on Rails страдает от неполной документации и обширного набора функций, который не всегда организован очень хорошо.

Objective-C не особенно сложен в изучении, но полный SDK огромен. Хорошей новостью является то, что она очень хорошо документирована и есть много видеоуроков и примеров кода. Я бы сказал, что сложнее освоить достаточно, чтобы стать эффективным разработчиком iPhone, но вы можете найти, что это будет более полезным.

Хорошая новость заключается в том, что оба они хорошо поддерживаются соответствующими сообществами и в таких местах, как переполнение стека.

В конечном счете, я бы посмотрел на проекты, которые вы намереваетесь опробовать, и выяснил, какая платформа лучше всего подходит.

1 голос
/ 20 февраля 2010

Хотя PHP и Ruby являются интересными языками для изучения и будут полезными навыками в вашей карьере дизайнера пользовательского интерфейса, я действительно рекомендую вам просто немного поработать с Objective-C. Я думаю, что, начав с нескольких небольших примеров и немного поэкспериментировав, вы скоро освоитесь с языком и будете уверены, что сможете развить его.

Вы говорите, что у вас нет опыта программирования, чтобы овладеть Objective-C; Что ж, теперь у вас есть шанс изучить некоторые действительно хорошие вещи с настоящей целью. Очевидно, что здесь есть кривая обучения, но, безусловно, это будет и с Ruby и PHP, так что вы можете пойти более прямым путем, перейдя прямо к Objective-C.

Я прочитал книгу Хиллегаса, и это хороший текст, но я не уверен, что он является правильным как отправная точка. Вы смотрели учебник Скотта Стивенсона ? Это может быть хорошим местом, если вы решите пойти по пути ObjC. Я также думаю, что как только вы увидите, как объектно-ориентированное программирование работает на практике, вы вскоре получите теорию, лежащую в основе.

1 голос
/ 17 февраля 2010

Не отчаивайся! Ваш опыт работы с Javascript / CSS достаточен для создания приложений для iPhone. Проверьте jQTouch . Это плагин JQuery, который позволяет создавать мобильное веб-приложение с сенсорным экраном с использованием Javascript. Я должен подчеркнуть, что jQTouch создает веб-приложение, а не нативное приложение. Недостатком является то, что у вас нет доступа ко всем API, которые были бы у нативного приложения. Положительным моментом является то, что веб-приложения jQTouch работают на всех телефонах с браузерами на основе webkit (iPhone, iTouch, устройства Android и т. Д.). С точки зрения пользовательского интерфейса JQTouch отлично справляется с работой, поддерживая внешний вид и навигацию родных приложений для iPhone.

0 голосов
/ 28 марта 2011

Вы говорите, что у вас возникли проблемы с пониманием объектно-ориентированного программирования. Если вы решили использовать Ruby on Rails, вам действительно следует знать, что Ruby полностью ориентирован на объекты. В Ruby все является объектом. Даже такие вещи, как базовые типы, такие как целое число, не существуют; это предметы под одеялом. Это делает его действительно интересным для изучения, но не ходите туда, если хотите избежать ориентации на объект. Если вы собираетесь выбрать Ruby on Rails или PHP, вы уже знаете, что будете создавать веб-приложение, а не нативное приложение для устройства. Если вы заинтересованы в поиске приложения для устройства, вы можете взглянуть на Titanium от Appcelerator . Он позволяет создавать собственные приложения для устройств, ориентированные на несколько устройств, включая Android, iOS, BlackBerry и настольные компьютеры. В отличие от Adobe Flex (который мне нравится) он компилируется в собственные коды операций устройства, поэтому вы не будете слишком расстраивать Стива Джобса. Titanium также дает вам гораздо больший выбор исходного языка, который вы можете использовать, поэтому вы не обязаны использовать Objective C. Вы должны быть в состоянии сделать большой успех с HTML, CSS, JavaScript, Java, Ruby, Python и Objective C. Appcelerator недавно приобрел Aptana, которая делает приличную среду разработки на основе Eclipse, поэтому мы скоро сможем получить полную среду разработки. Я не имею никакого финансового интереса ни в какой из этих компаний. Просто делюсь ...

0 голосов
/ 25 февраля 2010

Примечательно, что компилятор Macruby существует и может создавать скомпилированные в нём приложения Cocoa для Mac OS X. В настоящее время iPhone не поддерживается, но он может служить мостом.

...