Szukasz nowego języka programowania do tworzenia stron internetowych? [Zamknięte]

14

Zastanawiam się, czy są jakieś mniej stronnicze zasoby, które dają dobre, konkretne przeglądy języków programowania i ich zamierzonych celów. Chciałbym nauczyć się nowego języka, ale odwiedzanie stron każdego języka nie działa. Każdy mówi o tym, jak wspaniale jest, nie wspominając o słabościach ani konkretnych celach .

Ruby to dynamiczny język programowania typu open source z naciskiem na prostotę i wydajność.

Python to język programowania, który pozwala pracować szybciej i skuteczniej integrować systemy.

Będąc programistą PHP od lat, Vic Cherubini dobrze podsumowuje moją trudną sytuację:

Znałem dobrze PHP, miałem własny framework i mogłem szybko pracować, aby coś uruchomić.

Tak zaprogramowałem podczas rewolucji MVC. Dostałem coraz lepszą pracę (czytaj: lepiej płatne, lepszy tytuł) jako programista PHP, ale przez cały czas zdawałem sobie sprawę, że kod, który napisałem w swoim czasie, był świetny, a kod, z którym pracowałem w pracy, był okropny. Na przykład gorsze niż okropne. Okrutny. Zły poziom handlu OS. Posiadanie pobocznych projektów utrzymywało mnie przy zdrowych zmysłach, ponieważ kod, z którym pracowałem w pracy, sprawiał, że byłem nieszczęśliwy.

Dlatego odchodzę z PHP dla moich pobocznych projektów i nowych przedsięwzięć programistycznych. Jestem z PHP. Wyczerpany, jeśli chcesz. Osiągnąłem poziom, na którym myślę, że jestem na szczycie jako język i jeśli wkrótce nie przejdę do nowego języka, skończę z programowaniem i nie chcę tego.

Języki, na które patrzyłem, obejmują JavaScript (dla node.js), Ruby, Python i Erlang. Myślałem nawet o Scali lub C ++.

Problem polega na tym, aby dowiedzieć się, które z nich są najlepiej dostosowane do moich potrzeb.

Gdzie więc mogę pominąć szum i uzyskać rzeczywiste informacje na temat dojrzałości platformy, wielkości społeczności oraz mocnych i słabych stron tego języka. Jeśli je znam, to wybór języka, aby kontynuować tworzenie stron internetowych powinien być łatwy.

Aktualizacja

Po prostu nie chcę zaczynać 4 miesięcy z jakimś językiem i uważam, że jest do bani, ponieważ każdy wątek ma narzut 4 MB, lub maksymalna równoczesna liczba połączeń wynosi 999, nie ma pakietu do wykonania funkcji „X”, lub wsparcie jest wycofywanie się z nowej gałęzi językowej.

Xeoncross
źródło
14
Trudno powiedzieć, która najlepiej zaspokoi Twoje potrzeby, jeśli nie określisz tych potrzeb.
vartec
3
Dlatego nie zdefiniowałem swoich potrzeb - moje osobiste potrzeby są nie na temat . Chcę wiedzieć, gdzie mogę dopasować moje potrzeby do określonego języka programowania. Ponieważ moje potrzeby mogą się zmienić i muszę wrócić jeszcze raz.
Xeoncross
Warto zauważyć, że program ma też coś więcej niż szybkość wykonywania . Ważną rolę odgrywają szybkość programowania i sposób budowania aplikacji (ze względu na język).
Xeoncross
4
chodzi tu mniej o języki, a bardziej o dojrzałość i bogactwo funkcji dostępnych dla nich ram.
1
Proponuję rzucić okiem na ten znakomity post Alex Martelli.
phant0m

Odpowiedzi:

3

Nie zamierzałem publikować tego jako odpowiedzi, ale Xeoncross poprosił mnie o to, więc zaczynamy:

(Sidenote: jeśli ktoś mógłby naprawić problem przeceny w małym przykładzie kodu, byłbym wdzięczny).

Wysłany przez Alex Martelli na comp.lang.python : Co jest lepszego w Ruby niż Python? na sie 18 2003 17:50

Erik Max Francis napisał:

„Brandon J. Van Every” napisał:

Co jest lepszego w Ruby niż Python? Jestem pewien, że coś jest. Co to jest? Czy nie byłoby sensowniej pytać o to ludzi Ruby, niż ludzi Python?

Może, ale nie musi, w zależności od swoich celów - na przykład, jeśli cele te obejmują „badanie socjologiczne” społeczności Python, zadawanie pytań tej społeczności może okazać się bardziej ujawniające informacje na ten temat, niż umieszczanie ich gdzie indziej :-). Osobiście chętnie skorzystałem z okazji, by w końcu wykonać jednodniowy samouczek Ruby'a Dave'a Thomasa w OSCON. Pod cienką okleiną różnic składniowych uważam, że Ruby i Python są niesamowicie podobne - gdybym obliczał minimalne drzewo rozpinające spośród prawie każdego zestawu języków, jestem prawie pewien, że Python i Ruby byłyby dwoma pierwszymi, które połączyłyby się w jedno węzeł pośredni :-).

Jasne, robię się zmęczony, w Ruby, wpisywać głupie „koniec” na końcu każdego bloku (zamiast po prostu unindenting) - ale to ja rozumiem, aby uniknąć wpisując równo głupie : co wymaga Pythona na początku dnia każdy blok, więc to prawie pranie :-). Inne różnice w składni, takie jak @fooversus self.foolub większe znaczenie wielkości liter w Ruby vs. Python, są dla mnie tak samo nieistotne.

Inni bez wątpienia opierają swój wybór języków programowania na takich właśnie kwestiach i generują najgorętsze debaty - ale dla mnie to tylko przykład jednego z przepisów prawa Parkinsona w działaniu (kwota na debatę na dany temat jest odwrotnie proporcjonalna do problemu faktyczne znaczenie). Jedną różnicą w składni, którą uważam za ważną, i na korzyść Pythona - ale inni ludzie bez wątpienia będą myśleć odwrotnie - „jak wywołujesz funkcję, która nie przyjmuje parametrów”. W Pythonie (jak w C), aby wywołać funkcję, zawsze stosujesz „operator wywołania” - nawiasy końcowe tuż za wywoływanym obiektem (w tych nawiasach końcowych przechodzą argumenty, które przekazujesz w wywołaniu - jeśli nie podajesz żadnych argumentów, wtedy nawiasy są puste). Pozostawia to jedynie wzmiankę o dowolnym obiekcie, bez udziału operatora, co oznacza jedynie odniesienie do obiektu - w dowolnym kontekście, bez specjalnych przypadków, wyjątków, reguł ad-hoc i tym podobnych. W Ruby (jak w Pascalu), aby wywołać funkcję Z argumentami, przekazujesz argumenty (zwykle w nawiasach, choć nie jest to niezmiennie przypadek) - ALE jeśli funkcja nie przyjmuje argumentów, to po prostu wspomnienie o funkcji wywołuje ją pośrednio. Może to spełniać oczekiwania wielu osób (przynajmniej bez wątpienia tych, których jedyne wcześniejsze doświadczenie w programowaniu dotyczyło Pascala lub innych języków z podobnym „wywołaniem implicit”, takich jak Visual Basic) - ale dla mnie oznacza to sama wzmianka o obiekcie może ZAWSZE oznaczać odwołanie do obiektu LUB wywołanie obiektu, w zależności od typu obiektu - w tych przypadkach, w których nie mogę uzyskać odniesienia do obiektu, po prostu wspominając o nim, będę musiał użyć wyraźnego „podaj mi odniesienie do tego, NIE nazywaj go!” operatorzy, którzy w innym przypadku nie są potrzebni. Wydaje mi się, że wpływa to na „pierwszorzędność” funkcji (lub metod lub innych wywoływalnych obiektów) oraz na możliwość płynnej wymiany obiektów. Dlatego dla mnie ta konkretna różnica w składni jest poważnym czarnym znakiem przeciwko Ruby - ale rozumiem, dlaczego inni mieliby coś innego, nawet jeśli nie mogłem się z nimi bardziej zdecydowanie nie zgodzić :-). Poniżej składni przechodzimy do kilku ważnych różnic w elementarnej semantyce - na przykład ciągi znaków w Rubim są obiektami zmiennymi (jak w C ++), podczas gdy w Pythonie nie można ich modyfikować (jak w Javie lub wierzę w C #). Znów ludzie, którzy oceniają przede wszystkim na podstawie tego, co już znają, mogą pomyśleć, że jest to plus dla Ruby (chyba że znają Javę lub C #, oczywiście :-). Ja myślę, że niezmienne ciągi są doskonałym pomysłem (i nie jestem zaskoczony, że Java, jak sądzę niezależnie, na nowo wymyślił ten pomysł, który był już w Pythonie), chociaż nie miałbym nic przeciwko posiadaniu typu „zmiennego bufora ciągów” (i najlepiej taki, który jest łatwiejszy w użyciu niż własne „bufory łańcuchów” Javy); i nie oceniam tego ze względu na znajomość - przed studiowaniem Javy, oprócz funkcjonalnych języków programowania gdzie ludzie, którzy oceniają przede wszystkim na podstawie tego, co już znają, mogą pomyśleć, że jest to plus dla Ruby (chyba że znają Javę lub C #, oczywiście :-). Ja myślę, że niezmienne ciągi są doskonałym pomysłem (i nie jestem zaskoczony, że Java, jak sądzę niezależnie, na nowo wymyślił ten pomysł, który był już w Pythonie), chociaż nie miałbym nic przeciwko posiadaniu typu „zmiennego bufora ciągów” (i najlepiej taki, który jest łatwiejszy w użyciu niż własne „bufory łańcuchów” Javy); i nie oceniam tego ze względu na znajomość - przed studiowaniem Javy, oprócz funkcjonalnych języków programowania gdzie ludzie, którzy oceniają przede wszystkim na podstawie tego, co już znają, mogą pomyśleć, że jest to plus dla Ruby (chyba że znają Javę lub C #, oczywiście :-). Ja myślę, że niezmienne ciągi są doskonałym pomysłem (i nie jestem zaskoczony, że Java, jak sądzę niezależnie, na nowo wymyślił ten pomysł, który był już w Pythonie), chociaż nie miałbym nic przeciwko posiadaniu typu „zmiennego bufora ciągów” (i najlepiej taki, który jest łatwiejszy w użyciu niż własne „bufory łańcuchów” Javy); i nie oceniam tego ze względu na znajomość - przed studiowaniem Javy, oprócz funkcjonalnych języków programowania gdzie Myślę, że niezmienne ciągi to doskonały pomysł (i nie jestem zaskoczony, że Java, jak sądzę niezależnie, na nowo wymyślił ten pomysł, który był już w Pythonie), chociaż nie miałbym nic przeciwko posiadaniu typu „bufora ciągów zmiennych” (i najlepiej taki, który jest łatwiejszy w użyciu niż własne „bufory łańcuchów” Javy); i nie oceniam tego ze względu na znajomość - przed studiowaniem Javy, oprócz funkcjonalnych języków programowania gdzie Myślę, że niezmienne ciągi to doskonały pomysł (i nie jestem zaskoczony, że Java, jak sądzę niezależnie, na nowo wymyślił ten pomysł, który był już w Pythonie), chociaż nie miałbym nic przeciwko posiadaniu typu „bufora ciągów zmiennych” (i najlepiej taki, który jest łatwiejszy w użyciu niż własne „bufory łańcuchów” Javy); i nie oceniam tego ze względu na znajomość - przed studiowaniem Javy, oprócz funkcjonalnych języków programowania gdziewszystkie dane są niezmienne, wszystkie języki, które znałem, miały zmienne ciągi - ale kiedy po raz pierwszy zobaczyłem ideę ciągów niezmiennych w Javie (której nauczyłem się na długo zanim nauczyłem się Pythona), od razu uderzyło mnie to jako doskonałe, bardzo dobre dla semantyka referencyjna języka programowania wyższego poziomu (w przeciwieństwie do semantyki wartości, która najlepiej pasuje do języków bliższych maszynie i dalej od aplikacji, takich jak C), z łańcuchami jako pierwszorzędnej, wbudowanej (i ładnej) kluczowe) typ danych.

Ruby ma pewne zalety w elementarnej semantyce - na przykład usunięcie „list kontra krotki” Pythona niezwykle subtelne rozróżnienie. Ale przede wszystkim wynik (jak utrzymuję, z prostotą duży plus i subtelne, sprytne rozróżnienia zauważalny minus) jest przeciwny Ruby (np. Mając zarówno zamknięte, jak i półotwarte interwały, z notacjami a..b i .. .b [ktoś chce twierdzić, że to oczywiste, który jest który? -)], jest głupi - oczywiście IMHO!). Ponownie, ludzie, którzy rozważają posiadanie wielu podobnych, ale subtelnie różnych rzeczy w rdzeniu języka PLUS, a nie MINUS, oczywiście policzą te „na odwrót” od ich liczenia :-).

Nie daj się zwieść tym porównaniom, że oba języki są bardzo dobreinaczej, pamiętajcie. Nie są. Ale jeśli poproszę o porównanie „capelli d'angelo” do „spaghettini”, po wskazaniu, że te dwa rodzaje makaronów są prawie nie do odróżnienia dla nikogo i wymienne w każdym naczyniu, które chcesz przygotować, nieuchronnie miałbym przejść do badania mikroskopowego, w jaki sposób niedostrzegalnie różnią się długości i średnice, w jaki sposób końce pasm zwężają się w jednym przypadku, a nie w drugim itd. - aby spróbować wyjaśnić, dlaczego osobiście wolałbym mieć capelli d „angelo jak makaron w jakimkolwiek bulionie, ale wolałby spaghetti jako pastasciutta niż odpowiednie sosy do tak długich cienkich form makaronów (oliwa z oliwek, mielony czosnek, mielona czerwona papryka i drobno mielone sardele, na przykład - ale jeśli pokroisz czosnek i paprykę zamiast je rozdrobnić, powinieneś wybrać bardziej dźwięczny korpus spaghetti niż cieńszą ulotność spaghetti i dobrze byłoby zrezygnować z achoview i zamiast tego dodać trochę świeżej wiosennej bazylii [ a nawet - jestem heretykiem ...! - liście mięty lekkiej ...] - w ostatniej chwili przed podaniem naczynia). Ups, przepraszam, to pokazuje, że podróżuję za granicę i chyba nie jadłem makaronu od jakiegoś czasu. Ale analogia jest nadal całkiem dobra! -) i radzę zrezygnować z achoview i zamiast tego dodać trochę świeżej wiosennej bazylii [a nawet - jestem heretykiem ...! - liście mięty lekkiej ...] - w ostatniej chwili przed podaniem naczynia). Ups, przepraszam, to pokazuje, że podróżuję za granicę i chyba nie jadłem makaronu od jakiegoś czasu. Ale analogia jest nadal całkiem dobra! -) i radzę zrezygnować z achoview i zamiast tego dodać trochę świeżej wiosennej bazylii [a nawet - jestem heretykiem ...! - liście mięty lekkiej ...] - w ostatniej chwili przed podaniem naczynia). Ups, przepraszam, to pokazuje, że podróżuję za granicę i chyba nie jadłem makaronu od jakiegoś czasu. Ale analogia jest nadal całkiem dobra! -)

Wracając do Pythona i Ruby, dochodzimy do dwóch dużych (pod względem właściwego języka - pozostawienia bibliotek i innych ważnych pomocniczych narzędzi, takich jak narzędzia i środowiska, jak osadzić / rozszerzyć każdy język itp., Poza to na razie - i tak nie miałyby zastosowania do wszystkich IMPLEMENTACJI każdego języka, np. Jython vs Classic Python są dwiema implementacjami języka Python!):

  1. Iteratory i kody kodu Ruby kontra iteratory i generatory Pythona;

  2. RAZEM Ruby, nieokiełznana „dynamika”, w tym możliwość „ponownego otwarcia” dowolnej istniejącej klasy, w tym wszystkich wbudowanych, i zmiany jej zachowania w czasie wykonywania - w porównaniu z ogromną, ale ograniczoną dynamiką Pythona     , która nigdy nie zmienia zachowania istniejącej klasy wbudowane i ich instancje.

Osobiście uważam 1 za obmycie (różnice są tak głębokie, że z łatwością mogłem zobaczyć, jak ludzie nienawidzą albo zbliżają się i odwracają drugie, ale na MOICH osobistych skalach plusy i minusy prawie się zwiększają); i [2] kluczowy problem - taki, który sprawia, że ​​Ruby jest znacznie bardziej odpowiedni do „majsterkowania”, ALE Python równie odpowiedni do stosowania w dużych aplikacjach produkcyjnych. W pewnym sensie jest to zabawne, ponieważ oba języki są tak DUŻO bardziej dynamiczne niż większość innych, że ostatecznie kluczowa różnica między nimi a moim POV powinna się na tym opierać - że Ruby „idzie do jedenastu” pod tym względem (odniesienie tutaj jest oczywiście „Spinal Tap”). W RubyMOGĘ TO ZROBIĆ ! To znaczy, mogę dynamicznie zmieniać wbudowaną klasę ciągów, aby to zrobić

a = „Witaj świecie” 
b = „witaj świecie” 
jeśli a == b 
    wypisz „równe! \ n” 
jeszcze 
    wypisz „różne! \ n” 
koniec
 

BĘDZIE drukować „równe”. W Pythonie nie ma możliwości, aby to zrobić. Do celów metaprogramowania, implementacji eksperymentalnych ram i tym podobnych, ta niesamowita dynamiczna zdolność Ruby jest niezwykle wysoka pociągający. ALE - jeśli mówimy o dużych aplikacjach, opracowanych przez wiele osób i utrzymywanych przez jeszcze więcej, w tym wszelkiego rodzaju bibliotek z różnych źródeł i potrzebujących wejść do produkcji na stronach klienckich ... no cóż, NIE CHCĘ język, który jest tak dynamiczny, dziękuję bardzo. Nienawidzę samego pomysłu, że niektóre biblioteki nieświadomie łamią inne, niepowiązane z sobą te, które polegają na tym, że te łańcuchy są różne - jest to rodzaj głęboko i głęboko ukrytego „kanału”, między fragmentami kodu, które WYGLĄDAJĄ osobno i MUSZĄ BYĆ osobne, co oznacza śmierć programowanie na dużą skalę. Pozwalając dowolnemu modułowi wpływać na zachowanie innych „potajemnie”,

Gdybym musiał użyć Ruby do tak dużej aplikacji, starałbym się polegać na ograniczeniach w stylu kodowania, wielu testach (do ponownego uruchomienia, gdy COKOLWIEK się zmieni - nawet tego, co powinno być całkowicie niezwiązane ...) i tym podobnych, aby zabronić korzystania z tej funkcji języka. Ale moim zdaniem NIE posiadanie tej funkcji jest jeszcze lepsze - tak jak sam Python byłby jeszcze lepszym językiem do programowania aplikacji, gdyby pewna liczba wbudowanych elementów mogła zostać „przybita”, więc WIEDZIAŁEM, że , np. len("ciao")ma 4 (zamiast martwić się podświadomie, czy ktoś zmienił wiązanie nazwy lenw __builtins__ module ...). Mam nadzieję, że ostatecznie Python „dopracuje” swoje wbudowane funkcje.

Problem jest jednak niewielki, ponieważ ponowne wiązanie wbudowanych poleceń jest dość przestarzałe, a także rzadką praktyką w Pythonie. W Ruby wydaje mi się to znaczące - podobnie jak zbyt potężne narzędzia makro innych języków (takich jak, powiedzmy, Dylan), moim zdaniem, stwarzają podobne ryzyko (mam nadzieję, że Python nigdy nie otrzyma tak potężnego systemu makro, nie liczy się urok „pozwalania ludziom definiować własne, specyficzne dla domeny małe języki osadzone w samym języku” - to, IMHO, osłabiłoby wspaniałą przydatność Pythona w programowaniu aplikacji, prezentując „atrakcyjny uciążliwość” niedoszłemu majstrownikowi, który czai się w sercu każdego programisty ...).

Alex

phant0m
źródło
Uznałem to za odpowiedź, ponieważ jest to świetny, względnie bezstronny przegląd Ruby i Pythona jako całości. Wyjaśnienie, w jaki sposób języki działają i nie działają .
Xeoncross 30.06.11
27

Powodzenia

Żaden z podanych przykładów nie jest obiektywny ani testowalny. Wszystkie są hype i opinii.

... prostota i wydajność ... szybciej ... bardziej efektywnie.

Spróbuj

Weź mały przykładowy projekt, który prawdopodobnie wykonasz, i wypróbuj go we wszystkich językach, które Cię interesują. Następnie opublikuj obiektywną recenzję, a wszyscy się dowiemy.

Steven A. Lowe
źródło
2
Niezły pomysł, jednak nie działałby w prawdziwym świecie. Nie poświęcając czasu na pełne zrozumienie każdego języka - nigdy nie mogłem przewidzieć pełnego problemu z wzorcem projektowym i korzyści, jakie mógłby zapewnić każdy system. Jestem pewien, że praca nad każdym językiem zajęłaby miesiące. Wolę usłyszeć od ekspertów od opon niż spędzić miesiące na projektowaniu każdego koła, aby dowiedzieć się, dlaczego tak je zbudowali. Jednak po tym, jak będę miał dobrych kandydatów, na pewno to zrobię.
Xeoncross
1
@Xeoncross: z każdym wypróbowanym językiem zwiększysz swoje doświadczenie i będziesz mógł wykorzystać go w innych językach. 4 miesiące na zanurzenie się w języku nigdy nie są stracone; a jeśli język jest naprawdę gówniany, potrzebujesz mniej niż dwa tygodnie, aby się dowiedzieć.
tdammers
To prawda, zbudowanie czegoś powinno zająć tylko kilka tygodni i skorzystałbym z tego doświadczenia, ponieważ języki zwykle podążają za innymi językami.
Xeoncross
3
Tak, prawdopodobnie powinieneś wypróbować wszystkie te języki, aby znaleźć dobre dopasowanie. Problem polega jednak na tym, że kiedy używasz nowego języka, nie używasz go tak, jak powinien. W końcu robisz to samo, co robiłeś z językiem, który już wiesz, jak używać tylko z inną składnią. Zajmuje sporo czasu, aby dowiedzieć się, jakie są zalety każdego języka i jakie są naprawdę korzyści.
radix07
3
Byłbym zaskoczony, gdyby istniała jakaś znacząca różnica między nowoczesnymi językami do celów ogólnych. Tam powiedziałem to na głos. I kursywą . Niech płomienie się zaczną!
Steven A. Lowe
8

Myślę, że część problemu polega na tym, że każdy, kto wie wystarczająco dużo, aby sensownie komentować jeden lub więcej języków, będzie miał uprzedzenia. Przez prawie 4 dekady programowania pracowałem w większej liczbie języków, niż potrafię zliczyć. Mogę przekazać opinie (niektóre z nich datowane) na temat kilku z tych języków, ale żadna z tych opinii nie będzie bezstronna.

Podchodzę do tego, by używać właściwego języka do pracy. Pytasz konkretnie o tworzenie stron internetowych , ale wciąż jest to dość szeroka kategoria - coś w rodzaju powiedzenia, że ​​interesujesz się fotografią. Mikro? Astro? itp. Chociaż zgadzam się, że PHP nie jest językiem spełniającym emocje, dla wielu klientów jest to właściwy język oparty na dowolnej liczbie czynników, między innymi długoterminowej zdolności do znalezienia programistów, którzy naprawią witrynę po wyjściu z witryny i / lub zostać potrąconym przez autobus.

Może więc powinieneś przyjrzeć się typom klientów zainteresowanych projektami, które nadają się do czegoś innego, a następnie popracować nad tym, aby zainteresować się nimi.

Peter Rowell
źródło
Cóż, skoro jestem tak dobry w PHP - będę w nim nadal pracował, ponieważ nadal mogę zarabiać na życie. Głównie myślałem o nowym języku dla moich własnych projektów. Coś, co pomoże dodać smaku z powrotem do mojego życia. Pracuję w prawie wszystkich obszarach projektowania stron, o których myślisz, NLP, parsowanie tekstu, CMS, API, pamięć itp. Ponadto, ktoś z doświadczeniem w wielu językach ma znacznie mniej stronniczości niż ludzie z jednym procesem projektowania.
Xeoncross
Ach Następnie dam moją standardową odpowiedź na pytania typu „najlepszy język”: Python. Ignorując „znaczące białe znaki” (co można zrobić), jest to dla mnie idealny język. Ponadto istnieje niesamowita liczba bardzo wysokiej jakości bibliotek z interfejsami API języka Python. Np. NLTK, Natural Language Toolkit ( nltk.org ).
Peter Rowell,
Ach, ale co takiego jest w Pythonie, co czyni go lepszym? Większość języków ma te same zestawy narzędzi - to projekt języka, który wprowadza takie rzeczy, jak wątki, współbieżność, wymagania dotyczące maszyn wirtualnych, kompilacja / interpretacja, trwałość itp.
Xeoncross
Programowanie w Pythonie jest po prostu zabawne. To sprawia, że ​​jest dla mnie „lepszy”. Jest to na tyle proste, że nie potrzebujesz trąbiącego dużego IDE, aby go kodować. Ale ma również wiele interesujących funkcji, takich jak obiekty, możliwości programowania funkcjonalnego, wiele istniejących bibliotek / frameworków / narzędzi oraz dobrze prosperującą i entuzjastyczną społeczność z dużą ilością otwartej / bezpłatnej dokumentacji na początek.
John Gaines Jr.
2
Prawdziwe. Najprostsze wytłumaczenie jest takie, że Python działa podobnie jak mój mózg, co czyni mnie bardziej produktywnym; Rzadko zdarza mi się pytać: „Jak mam to zrobić w Pythonie?” Chociaż GIL (Global Interpreter Lock) jest trochę problemem, nie ma na mnie większego wpływu, ponieważ częściej mam do czynienia z sytuacjami wieloprocesowymi (zwłaszcza wieloetapowymi potokami przetwarzania NL) niż wielozadaniowość . Podoba mi się także różnorodność opcji interfejsów umożliwiających dostęp do nowych bibliotek zewnętrznych: ctypes, Boost itp.
Peter Rowell,
7

Pyton

Najbardziej uniwersalny i ogólny cel ich wszystkich, ale także w przypadku programowania internetowego zapewnia szerszy wybór produktów. Ustandaryzowany interfejs WSGI gwarantuje doskonałą interoperacyjność między platformą a serwerami. Niektóre z godnych uwagi produktów internetowych Python:

  • Django - pełnoprawna, dojrzała platforma wysokiego poziomu z zaawansowanym ORM, systemem szablonów, obsługą formularzy itp.
  • Twisted - framework do programowania sieciowego sterowanego zdarzeniami (asynchroniczne), może być używany do czatów, serwerów gniazd, usług sieciowych, jak go nazwiesz.
  • Tornado - także środowisko oparte na zdarzeniach, ale ten jest przeznaczony dla asynchronicznych usług internetowych.

Rubin

Ruby jest również dość uniwersalnym językiem. Jednak zdecydowanie najbardziej znanym produktem jest Ruby on Rails. Jego konstrukcja była inspiracją dla wielu (w tym wspomnianego powyżej Django).

JavaScript

Obecnie jedynym wyborem JS po stronie serwera jest node.js. Jest bardzo podobny do Tornado i Twisted (przez które został zainspirowany). Jednak wciąż brakuje w pełni rozwiniętego frameworka podobnego do Django lub RoR zbudowanych na nim.

Scala

Będąc językiem funkcjonalnym, świetnie nadaje się do obliczeń masowo równoległych, o ile chodzi o programowanie sieciowe ogólnego przeznaczenia, istnieje Lift - platforma internetowa inspirowana RoR, używana na przykład przez FourSquare.

vartec
źródło
Warto zauważyć, że takie rzeczy jak nieblokujące odpowiedzi, zużycie pamięci, współbieżność i inne czynniki są ogromne na rynku nowego języka, który będzie napędzał aplikację internetową.
Xeoncross
+1 dla Django. To zadziwiło mnie, kiedy się tego nauczyłem ... że byłem oszołomiony, ponieważ jednocześnie nauczyłem się tego i Pythona. Tak czy inaczej, świetna technologia, którą chciałbym przywrócić do mojego nieuchwytnego „wolnego czasu”.
zourtney
1
„... wciąż brakuje w pełni rozwiniętego frameworka” Sprawdź Express for Node - expressjs.com
T. Stone
@T: tak, spojrzałem na Express. Jednym z atutów Django i RoR jest ORM. Wydaje się, że Express go nie ma.
vartec
3

W moim najnowszym projekcie internetowym zacząłem od PHP, ponieważ używałem go wcześniej do projektowania stron internetowych (szybki start), ale miałem wiele problemów z językiem, np. Zła obsługa UTF-8 i dynamiczne pisanie. Mam też trochę doświadczenia w Javie i naprawdę lubię pisać na klawiaturze statycznej i dobre narzędzia do refaktoryzacji. Java ma również dobrą wydajność w porównaniu do PHP. Ale podoba mi się także ekspresja programowania funkcjonalnego.

Scala and Play Framework

Dzięki powyższym doświadczeniom bardzo podoba mi się język programowania Scala, jest on statycznie typowany, ma wsparcie dla programowania obiektowego i funkcjonalnego oraz ma dobrą wydajność w porównaniu z innymi językami używanymi do tworzenia stron internetowych. Ale nie podobały mi się frameworki dla Javy i serwletów, i znalazłem Play Framework , który obsługuje zarówno Scalę, jak i Javę i ma bardzo szybki cykl programowania - zapisz plik i zaktualizuj swoją stronę internetową. W ubiegłym miesiącu byłem bardzo zadowolony ze Scala & Play Framework. Ale obsługa Scala w Play Framework nie jest jeszcze bardzo dojrzała, podobnie jak wsparcie narzędzi.

W skrócie polecam Scala jako język programowania i Play Framework jako framework internetowy.

Jonas
źródło
Gra wygląda świetnie, nie miałam jednak okazji ( naprawdę ) przetestować ją. Pochodząc z podobnego tła php, zauważyłem, że Lift jest dość łatwy do zrozumienia. Wydaje się również, że jest trochę bardziej dojrzały niż Play, ale jestem zbyt nowy w Scali, żeby być rozstrzygającym.
yannis
3

Właściwie patrzysz prawdopodobnie na trzy rodzaje zasobów:

  • Ten, który wyjaśnia podstawy języka i dlaczego chcesz go używać,
  • Ten, który porównuje kilka języków.
  • Ten, który krytykuje jakiś aspekt języka.

Oba te zasoby byłyby stronnicze.

  • Kiedy wyjaśniasz coś o języku, przez większość czasu próbujesz przekonać czytelnika, aby go używał. Rzadko byś powiedział, że język jest do bani.
  • Porównując kilka języków, zawsze masz osobiste preferencje dotyczące jednego z nich.
  • Kiedy coś krytykujesz, trudno jest być neutralnym.

Może masz szansę znaleźć neutralne porównanie, ale bardzo trudno jest je napisać. Osobiście nigdy nie byłbym w stanie napisać porównania między prawdziwym językiem a PHP bez ciągłej krytyki PHP. I jestem prawie pewien, że nie jestem sam, nie będąc wystarczająco neutralnym.


Jeśli chcesz mieć przegląd różnych języków, musisz się ich nauczyć i dużo przeczytać . Ucząc się, mam na myśli znajomość podstaw języka, ale posiadanie własnej opinii . Nie dlatego, że przeczytałeś instrukcję Ruby, ale nie jesteś w stanie wyjaśnić, co jest dobre, a co złe w tym języku.

Oznacza to, że albo musisz spędzać czas (miesiące, a nawet lata) na ćwiczeniach. Lub możesz dużo czytać. Ale spróbuj czytać sprzeczne rzeczy . Jeśli ktoś pisze, że nienawidzi PHP, a PHP jest jednym z najgorszych języków w historii, szczególnie w porównaniu z prawdziwymi językami, takimi jak Ruby, C # lub Java, spróbuj także znaleźć osobę, która mówi, że PHP jest cudowny i że jest łatwiejszy w użyciu niż C #, znacznie szybszy niż Java i dużo ... (naprawdę nie wiem co) niż Ruby.

Pamiętaj o jednej rzeczy: jeśli znasz już dobrze język, na początku będziesz bardzo krytyczny, ucząc się innego , wierząc, że język, który już znasz, jest lepszy i znacznie łatwiejszy w użyciu. To tak, jak użytkownicy systemu Linux, którzy nienawidzą systemu Windows, i użytkownicy systemu Windows, którzy nienawidzą systemu Linux: w rzeczywistości żaden system operacyjny nie jest lepszy; po prostu użytkownik Linuksa nie wie, jak korzystać z systemu Windows i odwrotnie. Dopiero po zdobyciu wystarczającego doświadczenia w obu przypadkach nie będziesz w stanie poprawnie zdecydować, które z nich jest dla Ciebie lepsze.


Ostatnia rzecz, często zapomniana: bardzo ważna jest także ocena „otoczenia” języka:

  • Jak dobry jest framework (lub najczęściej używany framework)?
  • Czy łatwo jest znaleźć usługę hostingową? Czy doceniasz IDE?
  • Czy jest mnóstwo dobrze napisanych bibliotek stron trzecich?
  • Czy społeczność składa się z wysoce profesjonalnych programistów, czy głównie przez początkujących, którzy nie wiedzą nic ani o programowaniu w ogóle, ani o samym języku?
  • Czy dokumentacja jest wystarczająca i łatwa do wyszukiwania i zrozumienia?
  • Czy język i frameworki są często aktualizowane?
  • itp.
Arseni Mourzenko
źródło
W pełni się zgadzam. Na te pytania szukam odpowiedzi. Mówisz o częstym czytaniu - i to właśnie staram się zrobić - potrzebuję wielu zasobów, aby przeczytać o językach, w których chcę zajrzeć. Chociaż nie jest możliwa bezstronna recenzja, niektóre są znacznie bardziej zrównoważone i to wszystko, czego chciałem.
Xeoncross
2

Cóż, ponieważ jednym z twoich kryteriów wydaje się być „praca z przyjemnością”, pomyślałbym, że chciałbyś znaleźć stronnicze informacje. Jeśli autor czegoś pasjonuje się wybranym przez siebie językiem, istnieje spora szansa, że ​​oceni stronniczo.

Może powinieneś podejść do niego z drugiej strony. Ponieważ brzmisz tak, jakbyś mówił o zrobieniu kariery, a nie o hobby, być może powinieneś przejrzeć ogłoszenia o pracy, znaleźć ciekawe technologie / języki i zajrzeć do nich.

Jeśli chodzi o języki mające określone cele, wiele języków ich nie ma. Większość wymienionych przez ciebie języków ma charakter ogólny. Na przykład język Ruby jest językiem ogólnego przeznaczenia, odpowiednim do wielu zadań. Po dodaniu do niej frameworka, takiego jak Rails , ma on dość konkretny cel.

John Gaines Jr.
źródło
1

To nie jest dokładnie to, o co prosiłeś, ale gdybym szukał czegoś, co pozwoliłoby mi wyciągnąć się z rutyny tworzenia stron internetowych, wciąż korzystając z tego doświadczenia i kontaktów, zająłbym się pisaniem aplikacji na Androida i iPhone'a. Możliwość sprzedaży aplikacji, która uzupełnia witrynę internetową klienta, może naprawdę wyróżnić się na rynku Internetu, do którego coraz częściej można uzyskać dostęp za pośrednictwem urządzeń mobilnych.

Karl Bielefeldt
źródło
To naprawdę nie jest zły pomysł. Myślałem też o spędzeniu więcej czasu w ilustratorach i Photoshopie, pracując nad moimi projektami. Mimo to chciałbym dowiedzieć się więcej o opcjach aplikacji internetowych.
Xeoncross
0

Czy naprawdę osiągnąłeś limit PHP, czy tylko limity PHP, jakie znasz?

Zajrzałeś do Drupala ? Jest to oparty na PHP CMS i framework programistyczny, który zdecydowanie zachęca do dobrych standardów i praktyk kodowania. (Musiałem współpracować z OSCommerce w poprzednich pracach, czuję twój ból.) Chociaż oparty na PHP, jest wystarczająco różny, że często „właściwy” sposób zrobienia czegoś w czystym PHP nie jest właściwym sposobem na zrobienie tego w Drupal, i będziesz mieć dobrą krzywą uczenia się, aby się naprawdę wspinać. Może to jednak zmienić twoje spojrzenie na możliwości PHP jako języka i rozwoju sieci jako całości.

Garrett Albright
źródło
Ostatnim razem, gdy patrzyłem na Drupala (4 i 5), było raczej źle. Być może ich nowsze wersje używają teraz odpowiednich standardów. Mimo to, choć jest tak powolny, wolałbym trzymać się niesamowitych frameworków.
Xeoncross