2010-07-21 13 views
5

Pracuję od dłuższego czasu, ale jednocześnie uważam się za kompetentnego (lub lepszego) w C++, Java, C# & AS3/Flex w obszarach od serwerów internetowych do aplikacji desktopowych po 3D gry, jestem świadomy, że wszystkie te języki są dość podobne; nawet po stronie bibliotek wiem, czego szukać, używając bibliotek, które robią podobne rzeczy w innym języku.Jak ciężko jest rozwijać iPhone'a/iPada?

Ale Objective CI rozumie, że jest innym czajnikiem ryb, a rozwijanie urządzeń mobilnych zawsze wydawało mi się ciężką pracą, ponieważ trzeba się rozwijać na komputerze i testować na samym urządzeniu - moje doświadczenie rozwija się na PS2 odstraszają mnie takie rzeczy z powodu słabych debuggerów i innych narzędzi.

Jaka jest rzeczywistość? Czy przejście od serwerów internetowych i aplikacji desktopowych i bogatych klientów internetowych do iPhone'a ... czy doświadczony programista to po prostu kolejny język do nauki i nowe biblioteki do zabawy? Czy w ogóle można się czegoś bać?

edit: Moje główne pytanie na temat Obj-C dotyczyło w szczególności tego, czy jest to inny sposób programowania, jak na przykład przejście do Haskella z Javy. Wygląda na to, że tak nie jest.

Odpowiedz

4

Na początek, ObjC jest dość łatwy do uchwycenia, o ile skupia się na podstawach. Nie przejmuj się składnią, nie ma zbyt wiele powyżej C, co, jak zakładam, już znasz. Istnieją doskonałe książki tam this book jest definitywnym przewodnikiem polecam do większości nowych użytkowników, Erica Sadun ma również dobrą książkę na temat rozwoju iPhone'a, polecam oba te bardzo.

Po drugie, narzędzia nie są trudne w obsłudze, a użytkownik będzie mile zaskoczony debuggerem i inną integracją narzędzi. Instrumenty dawno przyszły, ale są niezbędne do przechwytywania takich rzeczy, jak wycieki pamięci, zużycie czasu procesora, a teraz zużycie energii.

Ale tak naprawdę, nie ma się czego bać, a co do innej platformy do nauki; dobrze, tak i nie. Zawsze będzie inna rzecz do nauczenia się, niezależnie od iPhone'a czy czegoś innego. Nie opieraj się. :)

1

W skali od 1 do 10, to około 6.

1

Jabłko robi użyciu Objective C i jest inna niż normalny rozwój C. Więc iPhone i iPad może być trudne, jeśli nigdy wcześniej nie stosowane Objective- C przed. Jeśli znasz w ogóle język o nazwie SmallTalk, wtedy Objective-C będzie bardzo łatwy do zdobycia.

Teraz inne urządzenia mobilne, takie jak Android, używają języka Java. Jeśli jesteś kompetentny w Javie, to rozwój Androida może być łatwiejszy.

Niektóre urządzenia korzystają z systemu Windows Mobile. Jeśli jesteś programistą .NET, możesz użyć platformy .NET compact do opracowania aplikacji Windows Mobile.

Tak samo, większość mobilnych pakietów SDK zawiera emulator do testowania aplikacji. Jeśli więc na przykład nie masz iPhone'a, możesz nadal testować swoją aplikację za pomocą emulatora. Rozumiem, że emulator ma być w 99% tak dokładny, jak rzeczywiste urządzenie.

+1

Blackberry w ogóle nie korzysta z systemu Windows Mobile. Skąd wziąłeś ten pomysł? Jako dodatek emulator z natury emuluje sprzęt tak blisko, jak tylko może, iPhone ma symulator, który nie próbuje emulować takich rzeczy jak timing, nie mówiąc już o architekturze, na której działa. W rezultacie nie jest on substytutem urządzenia i nie polecałbym wypuszczania czegokolwiek bez dokładnego przetestowania go na urządzeniu. – jer

+0

Obligatoryjna nitpick: to "Smalltalk", a nie "SmallTalk", ale tak, każdy rodzaj Smalltalk będzie ci dobrze służył. –

+0

Blackberry poprawione. Byłem w trakcie dwóch myśli, kiedy to piszę. Myślałem o czymś i wpisałem coś innego. Przepraszam za zamieszanie! – Icemanind

0

Nie sądzę, że jest coś, czego można się bać.

Symulator jest całkiem w porządku, nawet jeśli nie poradzi sobie z niektórymi sprawami - na przykład trudno symulować akcelerometr!

Po przekroczeniu progu znalezienia potrzebnych certyfikatów i założeniu konta programisty iPhone'a i tak dalej, wszystko w porządku.

To trochę kłopotliwe z pisaniem, ładowaniem na urządzenie, wypróbowywaniem itp., Ale fakt, że można rzeczywiście debugować kod działający na urządzeniu sprawia, że ​​jest on o wiele ładniejszy niż mógłby być . (Musiałem zachować aplikację dla telefonu Nokia 9110 i tam musiałem edytować, kompilować, ładować, uruchamiać, awaryjnie awaryjnie, gapić się na kod, zgadywać, edytować, kompilować itd.).

+0

Aby być uczciwym, nie ma powodu, aby jabłko nie mogło symulować akcelerometru; mają jeden na wszystkich swoich nowych urządzeniach, Z WYJĄTKIEM Mac Pro afaik, który uważam za jedyny powód, dla którego tego nie robią. Może to, i fakt, że nie chcą powtórzenia wojny gwiezdnej światła szabla ludzie wywijają macki z góry nad głowami. – jer

+0

To było dokładnie to, o czym myślałem :) Mac mini ma odpowiedni rozmiar do cepa ... –

0

Jako długoletni Windows Programista C++/.NET, nie było mi bardzo trudno rozpocząć rozwijanie w Objective C.

Istnieje kilka różnic w składni, do których trzeba się przyzwyczaić, ale na ogół jest wystarczająco podobny do C/C++, aby nie czuć się zupełnie jak nowy język.

Nauka kodu bibliotecznego i tego, co możesz i czego nie możesz zrobić, wydaje się być większym wyzwaniem dla mnie, które będzie wyzwaniem dla każdej nowej platformy.

+0

Każdy obóz ma swoje zawiłości i masz rację, pochodząc z .NET sprawia, że ​​krzywa uczenia się jest nieco bardziej stroma. Jednak nie jest to zbyt trudne, jeśli dobrze się zorganizujesz. Nie bój się robić notatki o głupich rzeczach, nawet przypominając o wstawieniu zera podczas tworzenia NSArray przy użyciu metody arrayWithObjects: class lub podobnej. – jer

0

Piszę książkę dla początkujących o nazwie Hello! iPhone, i stworzyłem listę wskazówek dla początkujących, aby pomóc ludziom zacząć. Po tygodniu porad, będziesz bardziej przygotowany do sprawdzania innych książek i zrozumienia podstaw nieco lepiej osądzać.

http://loufranco.com/beginner-iphone-programming-tips/

To zabierze Cię przez Hello, World i kilka innych prostych rzeczy (łuki i działania, podstawowe zarządzanie pamięcią, etc).

2

Cel C jest inny, ale nie jest daleko od normalnych metod OO. Składnia była dla mnie większą barierą.

Problem, który widziałem, to/czy uczysz się ObjC na iPhone'a i nie możesz naprawdę wziąć umiejętności (wiedzy ObjC) poza Applesphere. Nie widziałem na to żadnego pożytku. Mam garść książek, przez które przeszedłem, żeby zmoczyć stopy. Niektóre z nich, książki o Apress, zawierały błędy w instrukcjach kodowania, które powodowały mi erraty książki przez Google niezliczoną ilość razy. Więc bądź ostrożny, jeśli się tego nauczysz.

Ponadto, jeśli to się nie zmieniło, można rozwijać tylko w systemie OSX przy użyciu narzędzi SDK, ponieważ nie istnieje moja wersja systemu Windows.

Dzięki temu musisz także zagrać według zasad rozwoju Jabłek, aby opublikować je w AppStore, który ma swój udział w opowiadaniach grozy dev.

Mimo to działająca aplikacja jest zabawna i piękna na końcu.

+0

Tak jak nie można naprawdę usunąć .NET ze sfery Microsoft. – jer

+0

Nie użyłem .NET dużo, ale widzę, gdzie to najprawdopodobniej jest prawdą. Myślałem bardziej o wersjach PHP/Ruby/etc. – Kevin

+0

.NET jest użyteczny na większości komputerów stacjonarnych i laptopów, ale także dla aplikacji serwerowych i serwerów internetowych (nie wspominając o Silverlight) - może być związany z Windows, ale jest o wiele szerszy, nawet dyskontując Mono –

4

Jest zdecydowanie „paradigm shift” (ugh, słowa-wytrychy):

  • Nie masz całą pamięć na świecie (i nie ma wymiany albo)
  • Nie masz wszystko czas procesora na świecie
  • Prawdopodobnie nie chcesz, aby plik binarny był większy niż około 20 MB (rozmiar, który można pobrać przez sieć komórkową)
  • Nie możesz po prostu zmienić serwera, aby wszystko naprawić .
  • Projektowanie graficzne jest ważne, jeśli chcesz odnieść sukces (ale nie chcą uwędzić aplikację)
  • żądania sieci potrwać (strona z przekierowań czuje bardzo powolny porównaniu do pulpitu obok niego) .
  • Animacje JavaScript są boleśnie powolne (kiedykolwiek wypróbowano witrynę Google Maps na iPhonie?)
  • Konstrukcja interfejsu użytkownika jest silnie ograniczona rozmiarem palca użytkownika (mimo że iPhone 4 ma stosunkowo duży ekran).
  • Projektowanie interfejsu użytkownika jest naprawdę żmudne.
  • Użytkownik może robić więcej rzeczy niż klikanie i pisanie.

Uważam, że największą różnicę stanowi interfejs użytkownika, a nie język. Języki są łatwe. Biblioteki wymagają trochę czytania/wyszukiwania/pytania, ale potem są łatwe. Projektowanie interfejsu użytkownika i programowanie interfejsu użytkownika to: very trudne do zrobienia.

Powiązane problemy