C jest łatwo najszybszy język tam. Jest tak szybki, że piszemy w nim inne języki. Nikt poważnie nie pisze stron internetowych w C. Dlaczego? Bardzo łatwo jest go wkręcić w C w sposób bardzo trudny do wykrycia i prawie nic nie może ci pomóc. W skrócie, zjada programistów i generuje błędy.
Budowanie solidnej, szybkiej aplikacji nie polega na wybieraniu najszybszej wersji językowej, jej a) łatwości konserwacji i B) skalowalności.
Łatwość utrzymania oznacza, że nie ma wielu błędów. Oznacza to, że możesz szybko dodawać nowe funkcje i modyfikować istniejące. Chcesz języka, który wykonuje dla ciebie jak najwięcej pracy i nie przeszkadza. Właśnie dlatego takie rzeczy jak Perl, Python, PHP i Ruby są tak popularne. Wszystkie zostały napisane z myślą o wygodzie programisty, w porównaniu z surową wydajnością lub porządkiem. C został napisany dla surowego wykonania. Java została napisana dla pojęciowej czystości.
Skalowalność oznacza, że można przejść od 10 użytkowników do 10 000 użytkowników bez konieczności przepisywania całości. To oznaczało, że napisałeś najściślejszy kod, którym możesz zarządzać, ale wysoce zoptymalizowany kod jest zazwyczaj trudny do utrzymania.Zwykle oznacza to robienie rzeczy na korzyść komputera, a nie człowieka i biznesu. Poświęca to łatwość konserwacji i musisz powiedzieć swojemu szefowi, że jej dodanie zajmie 3 miesiące.
Skalowalność w dzisiejszych czasach osiąga się głównie poprzez wyrzucanie sprzętu i równoległe działanie. Ile procesów, procesorów i maszyn możesz wykorzystać w swojej pracy? Jeśli możesz to osiągnąć, możesz po prostu odpalić kolejny tani komputer w chmurze, jak tego potrzebujesz. Oczywiście będziesz chciał zoptymalizować niektóre, ale w tej skali masz o wiele więcej możliwości zastosowania lepszego algorytmu niż dokręcania kodu.
Na przykład, wziąłem powolne aplikacji PHP, który zmagał się obsługiwać 50 użytkowników jednocześnie, przełączane z Apache z mod_php do lighttpd z równoważeniem obciążenia, zdalne FastCGI procesy umożliwiające Zrównoleglanie z minimum zmiany kodu. Kilka podstawowych profilów ujawniło, że framework PHP użyty do prototypowania był powolny, więc został usunięty. Profilowanie również sugerowało kilka indeksów, aby przyspieszyć uruchamianie zapytań do bazy danych. Rezultatem końcowym był system, który był w stanie obsłużyć tysiące użytkowników i można było w razie potrzeby dodać więcej pamięci, pozostawiając większość kodu implementującego logikę biznesową nietkniętą. Zajęło to kilka tygodni i nie znam zbyt dobrze PHP.
Korzystne może być ponowne zaimplementowanie małych, ostrych elementów w bardzo szybkim języku, ale zwykle jest to już zrobione dla Ciebie w formie zoptymalizowanej biblioteki lub narzędzia. Na przykład twój serwer internetowy. Dla złożoności i ciągle zmieniających się potrzeb logiki biznesowej ważna jest łatwość utrzymania i jak dobrzy są programiści.
Przekonasz się, że większość sieci jest napisana w PHP, Perl i Pythonie, ponieważ są one łatwe do napisania, z małymi, ostrymi bitami napisanymi w językach takich jak C, Java i egzotyczne, takie jak Scala (na przykład Twitter) . Wikia, na przykład, jest zmodyfikowanym Mediawiki, który jest napisany w PHP, ale jest wydajny (między innymi) przez wykonanie heroic amount of caching.
Krok 1. Określ, na czym Ci zależy. Krok 2. Opracuj systemy gromadzenia liczb dla tych przypadków w różnych językach. Krok 3. Porównaj, wybierz język i narzędzie. –
Powszechnie mówi się, że świetni programiści mogą kodować świetne programy w brzydkim języku, a nieudolny programista może kodować nieciekawe programy w świetnym języku. więc ważne jest to, jak je kodujesz, wybór języka jest drugorzędny. ;) – Lukman
Jeśli potrzebujesz wybrać szybki język do implementacji znanego algorytmu, wyniki testów strzeleckich coś znaczą. Jeśli chcesz wybrać język, w którym chcesz napisać aplikację biznesową, testy porównawcze nie oznaczają przysiadu. Problem nie polega na tym, "który język może zrobić X szybciej", ponieważ nie ma prostego X dla "twojego biznesu". Wydajność i solidność w dużej mierze sprowadzają się do tego, jak dobrzy są wasi programiści, a nie język. – Schwern