Na SO natknąłem się na pytanie, która platforma, Java lub Python jest najlepsza do programowania w Google AppEngine. Wiele osób chwaliło się zwiększoną produktywnością uzyskaną dzięki użyciu Pythona w Javie. Jedną rzeczą, którą chciałbym powiedzieć o argumentie produktywności Python vs Java, jest to, że Java ma doskonałe IDE do przyspieszenia rozwoju, w którym Python naprawdę brakuje w tym obszarze ze względu na jego dynamiczny charakter.
Nawet jeśli wolę używać Pythona jako języka, nie sądzę, że daje to znaczny wzrost wydajności w porównaniu z Javą, szczególnie przy użyciu nowego frameworka. Oczywiście, gdyby była to Java vs Python, a jedynym edytorem, którego można było użyć, był VIM, to Python dałby ci ogromny wzrost wydajności, ale kiedy IDE są wprowadzone do równania, nie jest to tak wyraźne.
Myślę, że zalety Javy są często oceniane wyłącznie na poziomie językowym i często na podstawie przestarzałych założeń, ale Java ma wiele korzyści poza samym językiem, np. JVM (często krytykowany, ale oferuje ogromny potencjał), doskonałe IDE i narzędzia, ogromna liczba trzecich biblioteki imprez, platformy itp.
Pytanie: Czy języki dynamiczne Python / pokrewne naprawdę dają ogromne wzrosty wydajności, o których często mówi się? (z uwzględnieniem nowych ram i pracy ze średnimi i dużymi aplikacjami).
Odpowiedzi:
Jedną z głównych zalet Pythona jest filozofia „dołączone baterie”: obszerna i prosta w użyciu standardowa biblioteka. W Javie samo czytanie pliku tekstowego wymaga kilku wierszy kodu, zagnieżdżonych czytników i tym podobnych. W Pythonie jest to
f.read()
. Z pewnością będzie to ogromny wzrost wydajności, szczególnie w przypadku szybkiego prototypowania. Język Pythona jest również ogólnie mniej gadatliwy, co nie jest złą rzeczą (chociaż myślę, że znaczenie gadatliwości kontra zwięzłości jest często przeceniane).Jeśli jednak pracujesz już nad jakimś frameworkiem, takim jak GAE, spodziewam się, że różnice będą znacznie mniejsze, a przede wszystkim do osobistej płynności w języku. Przeważnie będziesz po prostu podłączał ramę do wybranej składni, a tam świetna standardowa biblioteka Pythona niewiele pomaga.
źródło
List<String> lines = Files.readAllLines(Paths.get("file.txt"), Charset.forName("UTF-8"));
. Nieźle! (To jest Java 7, która nie została jeszcze wydana 11 marca).Oto moje 2 centy. Z mojego doświadczenia wynika, że Python jest dobry dla małych i średnich projektów, podczas gdy dla większych projektów jestem bardziej produktywny dzięki Javie.
Ogólnie rzecz biorąc, mogę używać dynamicznie pisanego języka, takiego jak Python (lub PHP), do mniejszych projektów: nie jest on zbyt skomplikowany, chcesz szybko to zrobić i nie ma zbyt wiele rzeczy, które mogą pójść źle. W tym przypadku uważam, że Python może być bardziej praktyczny w użyciu.
Jednak gdy muszę opracować większy program, wolę język o typie statycznym, taki jak Java, ponieważ wolę, aby kompilator przeprowadzał dla mnie jak najwięcej sprawdzeń. Z mojego doświadczenia wynika, że w większych projektach spędzam więcej czasu na naprawianiu błędów w Pythonie niż w Javie, więc nie zawracam sobie głowy, jeśli napisanie kodu w Javie zajmuje trochę więcej, ponieważ pozwoli to zaoszczędzić czas później.
źródło
Jestem znacznie bardziej produktywny w bardziej zaawansowanych językach, takich jak Python lub Ruby. Nie ma znaczenia, czy część kodu Java może zostać wygenerowana przez IDE. Jest więcej kodu do odczytania i utrzymania. Przebicie się przez powtarzalny kod i znalezienie ważnych części zajmuje więcej czasu, a więcej czasu na jego zmianę. To w porządku, że Eclipse może konwertować
do:
ale za każdym razem, gdy otwieram klasę, widzę te śmieci i muszę prześlizgnąć się obok nich, aby znaleźć interesujące części. Ponadto podczas konserwacji błędy mogą być wprowadzane do generowanego kodu.
Wolałbym raczej zobaczyć:
Dla mnie potrzeba efektywnego działania IDE w Javie to dobry powód, aby wybrać inny język.
Być może z większą mocą porównaj ten kod Ruby:
przeciwko podobnemu kodowi Java:
Kod Ruby jest bezpośrednim tłumaczeniem specyfikacji: średnia waga osób powyżej 200 (cm). Komentarz byłby całkowicie zbędny.
Kod Java wymaga znacznej pracy zarówno przy pisaniu, jak i czytaniu.
Paul Graham przedstawia przekonujący argument za zwięzłością języków programowania w tym eseju . Po wykonaniu matematyki na poziomie absolwenta uważam, że jego argumenty są przekonujące, a argumenty przeciwko zwięzłości są słabe. Z pewnością pojedyncza linia w języku wysokiego poziomu może być trudniejsza do zrozumienia niż pojedyncza linia w języku niskiego poziomu, podobnie jak częściowe równanie różniczkowe jest trudniejsze do zrozumienia niż prosty dodatek. Ale łatwiej jest zrozumieć pojedynczą linię w potężnym języku niż pięć lub dziesięć linii, które zastępuje. Wyobraź sobie, że czytasz tekst matematyczny napisany za pomocą słów zamiast symboli.
źródło
dateOfBirth
upublicznij. Jeśli logika będzie musiała zostać do niej dodana później przy pobieraniu lub ustawianiu, dodaj a_dateOfBirth
do przechowywania danych, a następnie utwórzproperty
nazwę zadateOfBirth
pomocą metod get i set. Kod wywołujący wcale nie musi się zmieniać w Pythonie. Java korzysta tylko z akcesoriów, ponieważ nie ma pojęcia „właściwości”.people.stream().filter(p -> p.getHeight() > 200).mapToDouble(Person::getWeight).average().orElse(0);
Kilka lat temu przeniosłem się z Javy do Pythona i osobiście uważam, że jestem bardziej produktywny. Jak zauważa @Joonas, duża część wydajności pochodzi z biblioteki spakowanej. Ale niektóre z nich pochodzą z samego języka. Nie wyobrażam sobie, że nie mam słowników, list ze zrozumieniem, funkcji wyższego rzędu i powłoki.
Pamiętaj, że jeśli znasz już Javę, upłynie trochę czasu, zanim zaczniesz mówić płynnie w języku Python.
źródło
To trochę stare pytanie, ale chciałbym dodać moje 0,03 $. Myślę, że to zależy również od twojego sposobu myślenia. Naprawdę nie znoszę dynamicznych, interpretowanych języków. Z drugiej strony jestem wielkim fanem języków pisanych statycznie. Jasne, używanie Javy może być bardziej szczegółowe, ale łatwiej mi czytać i utrzymywać, kiedy wszystko zostanie powiedziane i zrobione. Uważam, że Python, Ruby i Perl są niezwykle trudne do odczytania (dla mnie). Po prostu nie mogę owinąć głowy, chociaż próbowałem. To powiedziawszy, mogę pisać kod w Scali w porządku i to nic wielkiego. Myślę, że to zależy od tego, z czym czujesz się komfortowo. Pod koniec dnia Java będzie znacznie wydajniejsza; bardziej niż Ruby, Python lub Perl. JVM to fascynująca technologia, a nauka jej wykorzystania może okazać się bardzo korzystna dla Ciebie.
źródło
Uważam, że Python, Ruby, JavaScript i SQL są znacznie wydajniejsze niż języki skompilowane, takie jak Java, ponieważ języki te mają bardzo szybką pętlę sprzężenia zwrotnego. Możesz uruchomić kilka wierszy kodu w wierszu poleceń i od razu wiedzieć, czy kod jest poprawny, czy nie. Jeśli rzuca to wyjątki, wiesz natychmiast. W Javie musisz skompilować, spakować i wdrożyć, co często zajmuje kilka minut w przypadku dużych systemów, a to powoduje bardzo powolny cykl opinii.
Szybki cykl sprzężenia zwrotnego pozwala szybko przejść do dobrego rozwiązania, dzięki czemu dynamiczne języki są bardziej produktywne.
źródło
feedback loop
Ostatnio robiłem znacznie więcej Pythona i od dłuższego czasu jestem programistą Java, a jeśli chodzi o nowy rozwój, myślę, że jestem nieco bardziej produktywny w Pythonie. wiele dość prostych rzeczy w Javie może być nieco żmudnych, takich jak przetwarzanie plików / strumieni, czytanie rzeczy z adresu URL, serializowanie XML itp. przez „nudne”, mam na myśli to, co zabiera ci 5 linii kodu w java weź tylko jeden w python. jednak użycie odpowiednich narzędzi, takich jak guava lub inny interfejs API kolekcji, może naprawdę w tym pomóc.
Myślę, że mówię, że jedną z zalet Pythona jest to, że jest on wyposażony w wiele funkcji, których potrzebujesz, aby użyć biblioteki innej firmy w Javie.
wszystko, co powiedziałem, w przypadku niektórych rzeczy byłbym o wiele bardziej produktywny w Javie niż w Pythonie, szczególnie jeśli chodzi o refaktoryzację i pracę z dużymi bazami kodów itp.
źródło