Jenomze v pythonu se prakticky nedela. Nejsou pro nej ani poradny database drivery a to nechci nic extra. Funkcionalita na urovni JDBC2 by stacila, solidni podpora pro messaging a LDAP by taky nebyla od veci.
Schvalne:
vyjmenujte 5 aplikacnich serveru v pythonu.
vyjmenujte 5 web frameworku v pythonu
vyjmenujte 5 IDE pro Python
Moje zkusenost se zope je nepouzivat to. Potrebuje to v teamu nekolik velmi dobrych zopistu aby zodpovidali dotazy tech mene zkusenych protoze zope je ponekud barokni design a spatne je do nej videt.
Pravda python neni jen zope. Nejvetsi tahak pythonu pro podnikove aplikace je plone.
Zdravím
Proč 5 proč ne 6 nebo >7?
Copak o kvalitě jazyka vypovídá, kolik má IDE nebo aplikačních serverů?
Ale budiž:
IDE:
http://wiki.python.org/moin/IntegratedDevelopmentEnvironments
Web Framework:
http://wiki.python.org/moin/WebFrameworks
Aplikační servery.
Podle mě, jako aplikační server s Pythonovskými službami může sloužit jakýkoliv Unix/Linux/MSWindows/BSD/… server (Třeba stylem: http://code.activestate.com/recipes/392879-my-first-application-server/).
Ale i těch větších než na pár řádků je víc než je Zope, třeba SkunkWeb.
Záleží samozřejmě na konkrétním případu, co je a není vhodné.
BTW: Ne všecno musí vypadat jako mastodnot J2EE.
Database drivery?
U menších věcí, (cca do 1 miliardy záznamů), jsem si vystačil s MySQLdb, Posgresql, cx_Oracle.
//Ovšem nic to nemění na tom, že C, C++, Java, C#, .Net, … a další mají své výhody a své místo na slunci.
Mně na pythonu hlavně vadí to, že tam řada chyb, které by jiné jazyky (C, C++, Java) odhalily při kompilaci, projde a spadne to až v momentě, kdy se program dostane na danou řádku.
Když se taková chyba udělá v místě, které se běžně nevykonává, tak se na to nepřijde a v tom programu pak zůstane latentní bug. Třeba v python testsuite jsem takový bug našel taky.
Když odbočíme od tématu „porucha osobnosti“ (o tématu „90 uchazečů“ už ani nemluvím) tak k tomu tvému „řada chyb, které by jiné jazyky (C, C++, Java) odhalily při kompilaci“, se celkem pěkně vyjádřil Petr Mach aka Wraith:
CITE: Myslí si, že statické typování a následná kontrola/odhalení chyb v programu již při překladu je samospasitelná nebo přinejmenším tak zásadní, že je nezbytné pro vytváření robustních programů. Domnívám se osobně, že tomu tak není. /CITE
Více, včetně argumentů na: http://python.wraith.cz/uvod-datove_typy-typovani.php
Když přejdu k příkladům uvedeným v článku:
Co když v tom programu máme if (error) printf("Vysledek = %d\n", (1+"1")); — v C to vyhodí při kompilaci warning, vyhodí ho to kdykoli, ať se tato část kódu vykoná nebo ne.
V pythonu příkaz if error: print 'Výsledek =', 1 + "1" vyhodí chybu, ale jen pokud se vykoná. Takže abychom takové chyby zachytili, museli bychom napsat test, který proběhne všechny větve programu.
Opravdu se takové testy v pythonu dělají?
„Myslí si, že statické typování a následná kontrola/odhalení chyb v programu již při překladu je samospasitelná“ — nemyslím, že je samospasitelná a že odstraní všechny chyby, ale odstraní dost chyb s minimem námahy. Samozřejmě, otestovat všechny větve programu je spolehlivější, ale časově náročné. U programů řídících letadla, vlaky apod. se to dělá, ale nevím, zda by to někdo dělal u běžného uživatelského programu.
Takovou chybu vydíme i v samotném pythonu 3.0.1, v souboru ./Lib/test/test_threading.py:
if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'os2emx'):
print >>sys.stderr, ('Skipping test_3_join_in_forked_from_thread'
' due to known OS bugs on'), sys.platform
return
Holt to prostě ten test nikdo na těchto platformách nepustil, tak ta chyba zůstala nepovšimnuta. Kdyby byl python staticky typovaný, tak by neprošla.
Co se vlastně v reálném programování s takovými to chybami typu if sys.platform == 'freebsd4': nějaký blbý výraz dělá?
Python samotnej s nimi neudělá nic, ten nechá klidně člověka napsat if 0: print neznama_promenna. Existuje nějaký nástroj, který zkouší vykonávat všechny větve programu a pak dokazuje, že ty výrazy jsou nebo nejsou správně?
Nějaké nástroje na statickou analýzu existují, např. Pylint, ale žádná sláva to podle mě není. S těmi statickými typy máš samozřejmě pravdu, ty leccos odchytí, ale Python jsem začal používat právě proto, že mainstreamové jazyky (C, Java) s typy zacházejí dost pitomě. Nutit programátory psát příkazy typu:
Stodola stodola = new Stodola;
nebo ještě hůř něco jako
Stodola *pStodola = (Stodola *) malloc(sizeof(Stodola));
může jenom sadista nebo skalní příznivce cimrmanovských absolutních rýmů. Jazyky, které mají typovou inferenci a třeba i podporu algebraických typů, napravují pomalu ale jistě staticky typovaným jazykům jejich pošramocenou pověst. Těm původním to ale nepomůže. ;-)
No zasejc v tom C/C++ si muze clovek lecos dovolit a ono to udela !presne! to, co napsal. V takovejch jako C#/Java/… si to „samo“ cosi dela aniz by to programator moh jakkoli ovlivnit i kdyby se nahlavu postavil (napr docilit v jave uvolneni pameti kdyz „ja chci“ je prakticky nemozny).
1) Ono !presne!, to je treba zajimave u syntaxe Wiki skriptu. Nastesti je to jen na ty skriptiky. ...ovsem jakmile se tam ma pracovat s if null nebo i not null, tak je pak neco jako ona stodola.
2) Treba v CA se programuje primo v ASM, a nejsou to zadaleka jen male veci. Holt neco jako letadla... Tady ovsem banky (mainframes).
clovece, keby ste sa v eci trochu vyznali na tieto otazky si odpoviete aj sam a nie hned odsudzujete „python“. Python sa odlisuje od statickych jazykov nielen syntaxou ale sposobom programovania. Napr. staticka kontrola sa (ciastocne) nahradza testovanim (test driven development). ale nema cenu sa tu rozpisovat…