Wątek przeniesiony 2015-01-08 15:00 z Nietuzinkowe tematy przez somekind.

Java i C# jako królowie aplikacji biznesowych

0

Java i C# obecnie królują w aplikacjach biznesowych. Ostatnio zainteresowałem się pythonem i wywarł na mnie bardzo pozytywne wrażenie. Stworzenie webowego gui które operuje na danych jest dużo prostsze niż w Javie. Podejżewam że bardziej skomplikowane rzeczy też da się zrobić. Do tego dochodzi fakt że jest skryptowy przez co nie ma redeployów a gdy 1 rzecz będzie źle to i tak aplikacja wstanie. Ja wiem że możliwość monkey pathingu i dynamicznych typów pozwala na zrobienie bałaganu, ale powiedzmy sobie szczerze. Java ma mnóstwo wzorców i zasad wgł. których piszę się projekty żeby było czysto i przyjemnie. Ale jak popatrzę na 2 kody robiące to samo w obu językach to i tak pythona łatwiej się czyta.

Dlaczego więc nie pisze się aplikacji biznesowych w tym języku? Jakie zalety ma java czy c# których ja nie widzę?

1

Python jest dynamicznie typowany i jest językiem interpretowanym. Dynamiczne typowanie oznacza słabsze możliwości narzędzi programistycznych, bo nie można przewidzieć jak zachowa się program (tzn. jakie dostanie dane), słabsze wsparcie IDE. Natomiast główną zaletą wymienionych przez ciebie języków jest ich stabilność, bezpieczeństwo i przewidywalność w czasie wykonywania aplikacji - i to jest ważniejsze w dużych krowach biznesowych niż przyjemność i łatwość kodzenia. Podczas kompilacji można wychwycić znacznie więcej błędów, które w pythonie mogłyby się ujawnić znacznie później (na "produkcji"), przez co kod jest bezpieczniejszy.

0
Wizzie napisał(a):

stabilność, bezpieczeństwo i przewidywalność w czasie wykonywania aplikacji

Python nie jest stabilny i bezpieczny? A przewidywalność w czasie wykonania aplikacji równie dobrze można wyeliminować przez testy jednostkowe. Jeżeli jest literówka w kodzie to test nie przejdzie.

Podpowiadanie przez IDE to raczej wygoda. Czas który dzięki niej zaoszczędzę tracę na budowie/deployu.

2
krzysiek050 napisał(a):

przewidywalność w czasie wykonania aplikacji równie dobrze można wyeliminować przez testy jednostkowe. Jeżeli jest literówka w kodzie to test nie przejdzie.

Czas, który zaoszczędzisz, tracisz na bardziej restrykcyjne testy (powodzenia przy refactoringu, gdzie zwykle większość czasu zajmuje przepisanie testów). A co, jeśli zapomnisz o czymś, a na review (o ile Twój kod będzie miał coś takiego robione) to nie wyjdzie?

krzysiek050 napisał(a):

Podpowiadanie przez IDE to raczej wygoda.

I to jaka :-) W C# kod pisze się prawie sam, a napisanie kilkudziesięciu linii bez błędu składniowego i literówek w nazwach to prosta sprawa.

1

Dlaczego więc nie pisze się aplikacji biznesowych w tym języku?

Imo główne powody to:

  1. Brak typów (type annotation z mypy, które Guido van Rossum (gościa chyba nie trzeba przedstawiać) proponuje wprowadzić do std, https://mail.python.org/pipermail/python-ideas/2014-August/028618.html by jakoś tam zniwelowały strate).
  2. Linty wszystkie mi znanie niemiłosiernie ssą.
  3. Do całkiem niedawna nie było nawet sensownego środowiska do Pythona...
1

Do listy wyżej jeszcze można dorzucić niską wydajność i beznadziejną współbieżność (GIL) domyslnej implementacji Pythona w porównaniu z Javą / .NET. U nas jeden zespół robi w Pythonie coś, co jest używane jako konsola administracyjna systemu bazodanowego (więc nie ma nawet tysięcy użytkowników), i bardzo marudzą na wydajność. A znacznie szybszego Jythona nie mogą użyć bo coś tam... (nie pamiętam już powodu).

1 użytkowników online, w tym zalogowanych: 0, gości: 1