Používal jsem oboje a souhlasím s Guidem.
https://www.youtube.com/watch?v=EBRMq2Ioxsc&t=5m18s
Ty jazyky jsou si dost podobné a co se naučíte v jednom využijete v druhém. To stejné platí pro Rails a Django. Mají společný důraz na DRY a TDD.
Oba jsou to čistě objektové jazyky s dynamickým dispatchem a dynamickým typováním, silně ovlivněné Smalltalkem a v případě Ruby rovněž Perlem.
Oba mají vynikající webové frameworky.
Oba mají silnou komunitu.
V případě potřeby oba mají alternativní implementace pro .NET a pro JVM.
Na webu je asi Ruby rozšířenější, Python je zase používanější obecně.
Ruby je "magičtější" po vzoru Perlu, spousta věcí může být implicitních nebo velmi zhuštěných. Python je explicitní, trochu výřečnější, většina lidí ho považuje za čitelnější.
Oba jazyky jsou podle mne nesrovnatelně lepší, než Java nebo C#, o PHP nemluvě.
Lepší z nich je ten, který už umíte ;-)
Ne, že bych chtěl zakládat flame, ale Python proti Javě 8 (dělám v obojím) je dnes hodně složité rozhodnutí. Statická typová kontrola totiž odhalí dost chybiček a takový Lombok [0] odstraní hodně ručně psaného kódu.
Když pak porovnám třeba Flask s Pippo [1] nebo Spark-java [2], tak těch rozdílů v použitelnosti vidím poměrně málo. No a korunu tomu nasadí benchmarky [3] kde Go a Java jsou daleko daleko před Pythonem i Ruby.
[0] https://projectlombok.org/ (ten web je hrozný, ale "knihovna" je super)
[1] http://www.pippo.ro/
[2] http://sparkjava.com/
[3] https://medium.com/@tschundeee/express-vs-flask-vs-go-acc0879c2122
Já ten jazyk dneska vybírám per projekt podle toho, který lépe zapadne do existující infrastruktury a kde jsou k dispozici potřebné knihovny (Python je super na matematiku, Java třeba na práci s dokumenty..).
Koukal jste na mypy: http://mypy-lang.org/? Sám to ještě moc nepoužívám, protože jsem prase, které nechává funkce reagovat různě na ruzné typy vstupů (isinstance), prej je to jedna z fičur C# takzvané přetěžování.. nečeho, ale Guido si to chválí a je to integrované od Pythonu 3.6 vejš (ještě teplé).
Pro parametry, které mohou mít několik různých typů, existuje v mypy typ union.
http://mypy.readthedocs.io/en/latest/kinds_of_types.html#union-types
Lombok sa mi nepáči, akurát dnes mi NetBeans tvrdohlavo hlási, že tam mám
chyby, lebo to nerozozná dobre. Myšlienka je fajn, ale mal som s tým len problémy.
Ručne to aj tak nikto nepíše, na to máme autogenerovanie kódu.
Odporúčam sa pozrieť na projekt ActiveJdbc, tam sú atribúty v entitách voliteľné...
Entita môže byť úplne prázdna.
Spark Java je veľmi zaujímavý projekt, ale pracujú na ňom len dvaja ľudia.
Rozhodne nie je production-ready, napríklad nie je možné v zabudovanom
Jetty serveri nastaviť connection pool. Tvorbu ciest ala Spark bude mať ale
napríklad v najbližšom release Spring Boot. Predpokladám, že v budúcnosti
to tak bude vo viacerých frameworkoch.
V Jave existuje viacero veľmi zaujímavých frameworkov, ktoré umožňujú vytvárať
webové rýchlo a efektívne. Napríklad Vaadin, Ninja, Play, Spring Boot...
interaktivní vývoj s použitím REPLu, bohatá introspekce, vše je objekt, vše lze předefinovat, defaultně je vše synchronní (narozdíl od js), snadné psaní a rychlé spouštění testů, podobné základní datové typy, GIL a spousta dalších věcí. Chybějící featury oproti druhému jazyku lze často doplnit použitím knihoven (Fibers, itertools).
Aplikace v Rails i v Djangu většinou používají SQL a generují tabulky z modelů. ORM je podobné. Vývojáři v Rails a Djangu musí obcházet stejná omezení a dělají to podobným způsobem (resque, celery).