Tworzenie stron internetowych a tworzenie komputerów stacjonarnych - czy tworzenie stron internetowych jest gorsze? [Zamknięte]

29

Jako długoletni programista komputerowy, który chce stworzyć naszą pierwszą aplikację internetową na dużą skalę, jakie są zalety i wady tworzenia aplikacji internetowych?

Czy tworzenie aplikacji internetowych jest znacznie gorsze niż tworzenie aplikacji komputerowej? Np. Czy jest to bardziej nużące czy denerwujące? Czy czas na rynek jest znacznie gorszy? Czy platforma internetowa nadmiernie ogranicza? Jeśli odpowiedź na którekolwiek z tych pytań brzmi „tak”, to dlaczego?

(A jak wygląda tworzenie aplikacji Flash lub Silverlight?)

Josh Kelley
źródło
5
Nie głosowałem za zamknięciem, ale myślę, że może być bardziej konstruktywne, jeśli można by go ponownie przekształcić w stanowisko do tworzenia aplikacji internetowych vs.
Josh K
K: OK, próbowałem sformułować pytanie bez unieważniania istniejących odpowiedzi. Dzięki.
Josh Kelley,

Odpowiedzi:

26

Nie

To bolesne, jeśli nie wiesz, co robisz lub nie planujesz poprawnie, ale to prawda w przypadku każdego rozwoju. Łatwiej jest butelkować aplikację w aplikacji komputerowej, ale wtedy tracisz dostęp, który zapewnia kodowanie aplikacji internetowej.

Dokonałbym wyboru między komputerem a Internetem na podstawie pożądanego zastosowania. Widzę wiele aplikacji napisanych przez Internet, które nie powinny być, ponieważ nie wiedzą, jak kodować aplikacje komputerowe. Nie widzę jednak wielu aplikacji komputerowych, które powinny być oparte na sieci, i myślę, że jest to coś do rozważenia. Jeśli potrzebujesz scentralizowanego magazynu, dostępu zdalnego i cech interfejsu użytkownika, to na pewno .

Nie mogę komentować Flasha ani Silverlighta, ponieważ nie używam żadnego z nich.

Josh K.
źródło
5
Nienawidzę być tym facetem, ale ... :s/loose/lose/:)
dr Hannibal Lecter
@dr Hannibal: Naprawiono. Czasami dwukrotnie stukam klawisze. ;)
Josh K
4
@dr Hannibal: Istnieje taki dysonans poznawczy, który pochodzi od słów „Nienawidzę być tym facetem” pochodzących z „Hannibal Lecter” :)
Skilldrick
25

Jak wspomnieli inni, jest to kwestia kompromisów i posiadania odpowiedniej wiedzy.

Jedyną pułapką, którą możesz rozważyć, jest to: w swoim pytaniu wspominasz, że postrzegasz sieć jako „wieloplatformową” jako zaletę. Ale czy to naprawdę? Pomyśl o tym w ten sposób: jeśli opracujesz coś na komputer, musisz zdefiniować listę platform i ich wymagania do obsługi.

Nie popełnij błędu, to samo dotyczy Internetu. I chociaż jest to już znacznie prostsze niż kiedyś, jeśli projektujesz szeroką publiczną aplikację, będziesz musiał poradzić sobie z każdą możliwą wersją każdej przeglądarki internetowej. A jeśli jest to bardziej aplikacja dla przedsiębiorstw, przygotuj się i przygotuj, aby bardzo dokładnie przygotować wymagania dotyczące obsługiwanych platform przeglądarki.

Nie sądzę, że unikniesz hacków specyficznych dla platformy tu i tam, jeśli zbudujesz coś znaczącego.

A potem zabawne części. Co jest najlepsze Przeglądarki, które aktualizują się prawie w bardzo przejrzysty sposób, tak jak Chrome? Lub te, które wprowadzają aktualizacje zabezpieczeń tylko co miesiąc i najważniejsze funkcje w każdej epoce kamienia (np. IE)? Odpowiedź nie jest tak oczywista, jak mogłoby się wydawać, ponieważ niektóre z tych częstych „przezroczystych” aktualizacji mogą uszkodzić kod i trzeba będzie postępować zgodnie z nim i niezwłocznie zareagować. Lub miej oko na wersje beta i deweloperskie podczas opracowywania i testowania. Dla wszystkich przeglądarek głupio powiedziałeś, że chcesz wesprzeć (powodzenia).

No i nie zapominajmy o uwagach dotyczących interfejsu użytkownika. Również zmierzyć się z radości z podjęciem decyzji, czy chcesz spójnego interfejsu CAŁEJ wszystkich platformach docelowych, czyli spójnego interfejsu WITHdocelowa platforma każdego hosta. Widzisz te wszystkie małe przyciski, które możesz przeglądać na stronach internetowych? Czy chcesz, aby były dokładnie takie same wszędzie, czy integrowały się ze środowiskiem używanym przez użytkownika? Oczywiście ten problem nie jest nowy i istniał w innych modelach programistycznych, ale wydaje się, że jest tutaj ważniejszy i zależy od rodzaju docelowych użytkowników i ich oczekiwań. Publiczny użytkownik końcowy chciałby, abyś zintegrował się z jego platformą - ale nadal będzie chciał, abyś „wow!” je z fantazyjnymi rzeczami - podczas gdy użytkownik korporacyjny będzie chciał czegoś, co wygląda jak aplikacja komputerowa. Platformy mobilne miały nowy wymiar.

W przypadku ostatnich 2 akapitów powszechnym pomysłem jest czasami pakowanie wstępnie skonfigurowanej przeglądarki internetowej z instalatorem, która następnie łączy się z aplikacją internetową (lokalnie hostowana lub w Internecie). Jest to świetne, ponieważ kontrolujesz częstotliwość aktualizacji i możesz „zamrozić” stan i dokładnie wiesz, na czym polegać i wspierać. Dodatkowo możesz dodawać fajne rzeczy, takie jak dedykowane rozszerzenia użytkownika. Na przykład pakowanie „zamrożonego” chromu z małymi rozszerzeniami Chrome, które opracowałeś, aby ułatwić korzystanie z aplikacji internetowej różnym użytkownikom, może być bardzo miłe. Z drugiej strony ... jesteś teraz odpowiedzialny za naruszenie bezpieczeństwa, ponieważ zamroziłeś cykl wydania, a twoja aplikacja nie skorzysta z poprawy prędkości (jeśli w ogóle).

Jak wiele rzeczy, jest to obosieczny topór.

Uwaga: Mam silną stronniczość w stosunku do sieci, ponieważ jestem w zasadzie dużym stosem częściowo wypieczonych technologii (i jestem tutaj uprzejmy), aż do warstw OSI, na których ciągle dodajemy warstwy badziewia, chowając problemy pod spodem, nie rozwiązując się tak naprawdę lub naprawiając je.

Biorąc to pod uwagę, jestem zwolennikiem sieci ze względu na jej wszechobecny charakter jako platformy. Myślę, że ruch Twojej firmy jest (prawdopodobnie) właściwy. Oczywiście zależy to od rynku docelowego i platform, na które celujesz. Jeśli chcesz ujawnić coś jako usługę, prawdopodobnie dobrze jest iść (choć nie jest to również konieczne). Jeśli nie, to może nie ma tak wielu powodów.

Hmm, i spodziewaj się zabawnych zmian w przyszłości, teraz, gdy coraz więcej lekkich wariantów istniejących systemów operacyjnych odradza się w środowiskach mobilnych (netbooki, smartfony, urządzenia PDA, tablety, eBooki ...), z większym naciskiem na używanie lekkich osadzonych przeglądarek. .. ale z całym ich nowym udziałem w renderowaniu interfejsu użytkownika.

Odnośnie technologii opartych na wtyczkach ... powiedziałbym, żeby się od nich oddalić. Zwiększą moc Twojej aplikacji, ale ograniczą jej penetrację rynku. W niektórych przypadkach będzie to postrzegane jako plus pod względem wsparcia międzyplatformowego, dopóki nowa platforma nagle odmówi ich obsługi. Standardy internetowe są tutaj z jakiegoś powodu (bądź ostrożny, aby nie ekscytować się zbytnio wszystkim w HTMl5, bo może to wybuchnąć ci w twarz).


EDYCJA: inne rzeczy do rozważenia ...

Rekrutacja

Jest to bardzo trudne do znalezienia doświadczonych programistów. Można by pomyśleć, że jest ich stado, ale gubią się w ogromnej puli, cóż, dość niekompetentnych ludzi, którzy myślą, że udało się napisać 700 wierszy JavaScript / ECMAScript, aby zaimplementować sprawdzanie poprawności w swoich formularzach, to wszystko i wszystko, co można osiągnąć w zakresie umiejętności na wysokim poziomie.

Nie żartuję, ostatnio moim pierwszym pytaniem do wszystkich wywiadów z programistami jest to, jak zadeklarować zmienną, a następnie, czy istnieje różnica między używaniem, varczy nie (w zależności od tego, jak odpowiadają). To przygnębiające. Znalezienie przeciętnego lub zaawansowanego programisty WWW jest dla mnie znacznie trudniejsze niż znalezienie przeciętnego lub zaawansowanego programisty komputerowego.

Postrzeganie

Nikt nigdy nie będzie cię traktować poważnie, gdy powiesz „Jestem programistą”. To jest dla podklasy programistów, programistów, prawda? Te, które ignorujesz i kpisz z daleka, i nie dołączają, gdy idą po kawę. :)

Jest to oczywiście nieprawda, ale sprowadza się to do tego, że tworzysz środowisko, które jest w większości zarządzane za Ciebie. Przeglądarki korygują twój zepsuty znacznik, zepsuty styl, a nawet poprawią niektóre zepsute skrypty i zoptymalizują je dla Ciebie, jeśli chcesz. A jeśli jesteś programistą internetowym, ludzie nie zakładają, że masz pojęcie o programowaniu niższego poziomu, więc musisz być kompletnym idiotą, prawda?

A potem zdają sobie sprawę, jak szalenie skomplikowany może być ECMAScript, ale odmówią przeglądu swojej opinii. Ponieważ to jest sieć. Nie lubimy tego z natury, po prostu lubimy to, co pozwala nam to robić.

Haylem
źródło
-2, +10 ... Widzę, że spotkałem się z pewnymi kontrowersjami;)
haylem
Różnice między przeglądarkami stają się coraz mniejszym problemem. Z pewnością istnieją niewielkie niespójności w sposobie obsługi CSS i tak dalej, ale w większości przypadków nigdy nie miałem poważnego problemu z nowoczesną przeglądarką. Chyba że masz rację z HTML5 <canvas>i takie tam ...
Dean Harding,
6
„Uwaga: Mam silne uprzedzenie do sieci, ponieważ jestem w zasadzie dużym stosem częściowo wypieczonych technologii (i jestem tu uprzejmy), aż do warstw OSI, na których ciągle dodajemy warstwy bzdur ukrytych pod spodem, tak naprawdę ich rozwiązywanie lub naprawianie ”. - CZY JESTEŚ MNĄ?????
Tabele Bobby
2
Pracowałem z kilkoma facetami, którzy są prawdziwymi guru tworzenia stron internetowych, robią niesamowite rzeczy i używają ich jako poważnej platformy do tworzenia oprogramowania. Mają mój głęboki szacunek. Ale to tylko dwa w ciągu ostatnich 15 lat. Reszta ... cóż, kiedyś miałem koncert jako „ekspert” Perla tylko dlatego, że mój przykładowy kod miał strukturę, a nie spaghetti, do którego przywykł ankieter; w tym czasie moja prawdziwa wiedza Perla mogła się zmieścić w naparstku.
Bob Murphy,
2
+1 za ECMAScript jest dobry, zły i nazywa się ECMAScript.
Alan Pearce
14

Jako ktoś, kto miał do czynienia z obydwoma (więcej niż komputer stacjonarny): zdecydowanie moim największym problemem jest poczucie „ogólnej niezręczności” w tworzeniu stron internetowych. Nawet przy użyciu najlepszych narzędzi i frameworków abstrakcje są nadal bardzo nieszczelne i ciągle masz do czynienia z faktem, że korzystasz z protokołu bezstanowego.

Kolejną związaną z tym irytacją jest mieszanka technologii używanych do wdrażania aplikacji internetowych. Nie ma ładnego, monolitycznego, modułowego środowiska i języka, w którym można by wszystko zrobić. Nawet stosunkowo proste aplikacje internetowe wymagają kodowania w kilku osobnych językach programowania, skryptów i znaczników.

Tak więc ogólna odpowiedź: TAK , to naprawdę tak źle. Przynajmniej jeśli pochodzisz z tradycyjnego tła pulpitu, w którym przyzwyczajasz się do kodowania rzeczy w czystym, bezproblemowym środowisku, używając technologii i platformy, gdzie wszystko jest dość liniowe i dobrze zdefiniowane. Najlepszym sposobem jest po prostu, aby nie traktować tego jako tego samego pola. Jeśli nadal nieświadomie oczekujesz, że tworzenie stron internetowych będzie „jak tworzenie pulpitu”, zawsze będzie wyglądało to bardzo nieznośnie i irytująco.

Stoły Bobby'ego
źródło
4
Powodem, dla którego czuł się „ogólnie niezgrabnie”, być może było to, że używałeś frameworków, które próbowały „wyabstrahować” ... co, sieć? Sieć jest bezstanowa. Bez względu na to, ile „formularzy internetowych” w ASP.NET chce sprawić, że pomyślisz inaczej, nigdy nie zapominaj, że jest on bezstanowy. Im szybciej programista zaakceptuje to jako niezmienną prawdę, tym szybciej zaczną pisać wysokiej jakości aplikacje internetowe.
Jason Whitehorn,
1
+1, dobrze powiedziane. Nawet z frameworkami takimi jak Rails, które mają być rozwiązaniem do zapisywania wszystkiego w jednym stosie technologicznym, udaje im się to popsuć, zmieniając zalecane praktyki z RJS na „Unobtrusive JS”.
Jas
11

największym przemyśleniem z komputera na komputer jest: aplikacja internetowa jest z natury bezpaństwowa

wymyśl tę część i jesteś dobry.

Steven A. Lowe
źródło
czy przeglądarka ma znaczenie?
JeffO,
@Jeff niekonsekwencje w różnych przeglądarkach są denerwujące, ale niezbyt znaczące
Steven A. Lowe
4
Musisz pisać dla prawdziwych przeglądarek (niektóre niespójności), Internet Explorera (więcej niespójności) i być może diabelskiego dziecka (IE6).
TRiG
2
@Malfist: Jeśli nie jesteś ostrożny, dzięki temu podejściu (bezpaństwowcy + sesje = stanowe) możesz zaprojektować emu z włączonym silnikiem odrzutowym samolotu, kiedy pierwotnie chciałeś orła;)
Piskvor
1
@Jim G: oczywiście, że tak. Różnice między przeglądarkami i innymi są niewielkie w porównaniu z przejściem od projektowania stanowego do bezpaństwowego.
Steven A. Lowe
5

Wiele żmudności pochodzi z pracy niezbędnej do tego, aby wszystko działało we wszystkich przeglądarkach. Ponieważ najprawdopodobniej nie musisz być na krawędzi, możesz wykorzystać pracę wykonaną przez innych, wybierając odpowiednią platformę internetową zamiast zajmować się własną.

Który z nich będzie silnie zależeć od tego, w jakim środowisku językowym jesteś obecnie przyzwyczajony. Możesz edytować pytanie, aby podać te informacje.


źródło
2
Problemy ze zgodnością przeglądarki to ogromny problem, to prawda, ale aby to zrównoważyć, nie zapominaj, że porównuje się do tworzenia komputerów stacjonarnych, gdzie masz do czynienia z różnymi wersjami systemów operacyjnych, bibliotek itp.
Carson63000,
@Carson, jeśli zajmują się tworzeniem pulpitu Java, ten ból jest w rzeczywistości dość minimalny. Może jest znacznie gorzej dla .NET lub Win32 API.
2

Nie, aplikacje internetowe mają inne kompromisy niż aplikacje komputerowe. Każdy ma swoje mocne strony. Podczas gdy istnieją mocne strony, takie jak pojedyncze wdrożenie, istnieje kompromis między wiedzą, które przeglądarki są obsługiwane i jakiej rozdzielczości ekranu oczekujesz od klienta? Chociaż masz kontrolę nad sprzętem serwera, pozostaje pytanie, jakiego ruchu oczekujesz i jak dobrze będzie się skalował? Dla tych, którzy od lat zajmują się tworzeniem stron internetowych, mogą to być obolałe miejsca, tak jak wyobrażam sobie, że masz jakieś zadania programistyczne, które są dla ciebie dużym problemem, prawda?

Moim zdaniem aplikacja Flash może, ale nie musi, być aplikacją internetową. Coś takiego jak AIR może sprawić, że niektóre pliki Flash będą działały teraz na pulpicie, a niektóre aplikacje są na nich zbudowane, np. Twhirl, więc nie jest to natychmiast wycinanie i suszenie.

JB King
źródło
2

Tworzenie stron internetowych niekoniecznie jest gorsze , jest po prostu bardzo różne.

Jedną z rzeczy, która odróżnia tworzenie stron internetowych od tworzenia desktopów, jest mnóstwo radykalnie różnych technologii, które musisz opanować, aby stworzyć całkiem złożoną aplikację. Chodzi mi o to, że zasadniczo musisz mieć dużą wiedzę na temat:

  • HTML
  • JavaScript
  • CSS
  • Niektóre języki po stronie serwera (Java / PHP / cokolwiek ...)
  • RDBMS (lub niektóre trwałe technologie sklepu)
  • ... i prawdopodobnie wiele innych rzeczy, takich jak Flash, Silverlight itp.

Podczas tworzenia pulpitu zwykle pracujesz z dużo bardziej monolitycznym zestawem technologii. Na przykład tworzenie aplikacji Java wymaga znajomości języka Java i to wszystko. (Oczywiście jest to nieco uproszczenie, ale chodzi o to, że tworzenie stron internetowych naraża cię na znacznie szerszy zakres radykalnie różnych technologii, które muszą współpracować, aby utworzyć działającą aplikację).

Charles Salvia
źródło
1

Nie

Tak długo, jak wybierzesz odpowiednie narzędzia, tworzenie stron internetowych jest tak czyste i łatwe jak tworzenie pulpitu.

Interfejsy API sieci Web (HTML, CSS, JavaScript i DOM) są odpowiednikami interfejsu API win32. Ostatecznie wszystko sprowadza się do tego poziomu API, ale jesteś szalony, jeśli programujesz bezpośrednio na nim bez biblioteki, aby oddzielić od ciebie bałagan, gadatliwość i niespójność.

Więc bądź ostrożny przy wyborze ram. Niektóre problemy są spowodowane przez wybranie złych narzędzi (np. Problemy ze zgodnością przeglądarki).

Możliwe jest posiadanie czystej i spójnej platformy do tworzenia stron internetowych z jednym językiem. Np. Jeśli chcesz, aby była to „cała java przez cały czas”, możesz użyć GWT i napisać zarówno kod po stronie klienta, jak i kod po stronie serwera w Javie. Lub, jeśli wolisz, aby to wszystko było javascript, możesz wybrać coś takiego jak Ext JS po stronie klienta i node.js po stronie serwera.

Joeri Sebrechts
źródło
0

Słyszałem, że jest to opisywane jako „... zmora mojego istnienia” i zgodziłbym się. Zaproponowano mi $$$ godzinę na tworzenie stron HTML i odmówiłem. To tyle bólu. Większość czasu spędziłem w HTML i ostatnio zacząłem pracować z „platformą Flash”. To jedna z najbardziej wyrafinowanych ram, jakie kiedykolwiek widziałem i nikt nawet o tym nie wie. Kiedy ludzie przywołują Flasha, myślą o Flashu sprzed 10 lat. Jest wyhodowany ... dużo. Znowu uwielbiam pisać oprogramowanie.

Nadal ma swoje wady. Błędy czasami pozostają na zawsze, ale jest coraz lepiej (dzięki Steve J.).

BTW Istnieje poważny niedobór dla programistów Flex. Tak wiele firm zwróciło się do mnie z chorobą. Jeśli znasz swój CS, to spędź kolejne 6 miesięcy na uczeniu się Flex Hardcore, a następnie zadzwoń do mnie. Przekażę wszystkie oferty pracy, które muszę odrzucić.

Aktualizacja: Obsługa wielu przeglądarek jest głównym problemem. To, co działa w jednej przeglądarce, nie będzie działać w innej lub będzie działać, ale nie w poprzedniej wersji.

Proces przebiega mniej więcej tak: - uzyskaj projekt strony - spróbuj odtworzyć go w jednej przeglądarce docelowej (może to być trudne) - pokaż klientowi - projekt zmian klienta - zeskrobaj całą pracę nad układem, którą pierwotnie wykonałeś - spraw, by był - klient zatwierdza - spraw, aby działał w innych przeglądarkach. To jest najtrudniejsza część. Przez cały czas występują niejasne błędy. Następnie napotkasz funkcje, których wcześniejsze przeglądarki nie obsługują, takie jak zaokrąglone rogi. Spróbujesz ponownie użyć kodu i css, ale to szybko ulega fragmentacji. Po prostu może bardzo szybko stać się wymagającym utrzymania. Dodaj animacje, a starsze przeglądarki dławią się.

Klient będzie dokonać zmian. Skończysz spędzać cały czas na robieniu „prostych rzeczy” i nienawidzić swojego życia. Staniesz się guru i będziesz wiedział rzeczy, których nie chcesz wiedzieć. Wiem, że to brzmi dramatycznie, ale nie upiększam problemów, które napotkasz. Ramy to ułatwią. Jeśli jesteś wytrwały w pracy w HTML, aby przygotować się do ponownego utworzenia jednej ze swoich ulubionych stron w HTML, upewnij się, że pasuje do projektu i funkcjonalności we wszystkich obsługiwanych przeglądarkach. Usuń problemy, które napotkasz na drodze, zanim pójdziesz do pracy. Problemy takie jak najlepsze narzędzia do projektowania, najlepsze frameworki javascript, najlepsze narzędzia do debugowania, najlepsze IDE itp.


źródło
Czy możesz edytować swoją odpowiedź, aby wyjaśnić, dlaczego uważasz ją za zmorę swojego istnienia?
Josh Kelley,
Zaktualizowałem moją odpowiedź powyżej
1
Trzy dolce za godzinę? Nic dziwnego, że go odrzuciłeś, czy w dzisiejszych czasach jest to płaca minimalna? ;)
Piskvor