Dobrý den,
programování beru pouze jako koníček a po přečtení této diskuse jsem poněkud zmatený. Ovládám dle mého poměrně přijatelně C++, ovšem co jsem tady četl, tento jazyk již není tak dobrý jako byl dříve. Programuji si pouze utilitky menšího rozsahu (například QuickRun, apod.). Koukal jsem na python, ovšem venku je již verze 3.1.2 a PyGTK podporuje verzi 2.6, což mi přijde jako známka zpomaleného vývoje (přijde mi to tak, nevím jestli je na tom kapka pravdy). Takže bych se rád zeptal - jaký jazyk (a k němu i nějaký GUI toolkit) by na relaxační programování tohoto rozsahu byl dle vás nejlepší?
Předem děkuji za odpovědi.
Nechtěně jsem příspěvek odklepl předčasně, takže tady je pokračování. Byla-li poznámka o C++ myšlena tak, že jsou dnes už v mnohých ohledech lepší alternativy (to neznamená, že C++ není v něčem optimální), je to samozřejmě pravda.
Co se týče Pythonu, verze 2.x a 3.x jsou de facto dva různé jazyky, resp. dva dialekty jednoho jazyka. Verzi 3.x dosud prakticky nikdo nepoužívá, takže v případě zájmu doporučuji zatím používat klidně verzi 2.6, postupně přejít na 2.7 (podle podpory v distribucích atd.), která je určitým lehkým přechodem k verzi 3.x a na verzi 3 přejít až v době, kdy pro ni budou připravené důležité knihovny a frameworky. To znamená nejdříve někdy koncem příštího roku. Výhodou Pythonu je, že má poměrně dobře strukturované standardní knihovny a spoustu úloh lze v tomto jazyce vyřešit rychle, snadno a poměrně elegantně. Podobné jazyky jsou v tomto ohledu například Ruby (používané méně, ale má některé zajímavé vlastnosti, osobně se mi líbí více Python, ale ono je to asi srovnatelné) nebo Perl (více knihoven, ale jazyk je drsnější a méně intuitivní. V případě zájmu o některý z těchto jazyků lze kromě Gtk+ použít např. i Qt - PyQt4 je např. velice vyzrálá platforma a mám s ní dobré zkušenosti v komerčních multiplatformních aplikacích (Windows, Linux i MacOS X).
Zde někým doporučovaná Vala je podle mě trochu slepá ulička, v podstatě se asi nerozšíří za hranice Gtk+/Gnome. Je ale podobná C++, C#, Javě atd., takže koncepty, které používá (kromě explicitních názvů konstruktorů, zřejmě převzatých z Turbo Pascalu), lze využít v dalších jazycích. Podobné minoritní jazyky jsou např. D nebo Go.
No a pak je možnost zaměřit se na některou "velkou platformu" - JVM (zde bych velice důrazně doporučil jazyk Scala, ale jsou i další zajímavé alternativy, jako je Groovy nebo Clojure, hlavní jazyk je zde samozřejmě Java) nebo .NET/Mono, kde je hlavním jazykem C#, ale lze použít např. Boo, které vychází z Pythonu nebo F#, které vychází z Objective Caml.
Existují i další možnosti jako Haskell (hardcore), LISP/Scheme (hardcore), Erlang (hardcore), Free Pascal, Smalltalk, nějaké varianty Basicu a spousta dalších, ale to bych nechal raději stranou.
Podle mě lze z hlediska "relaxačního programování" pojmout odpověď dvěma způsoby:
a) Chci naprogramovat nějaké utilitky a nemám zájem se moc šťourat v teorii a zacházet moc daleko. Tady bych osobně doporučil Python, Ruby nebo možná i zůstat u toho C++.
b) Mám zájem učit se nové věci a prohlubovat pomalu svoje znalosti. V současné době neznám jazyk, který bych mohl více doporučit nadšeným experimentátorům, než je Scala 2.8+. Kolem tohoto jazyka se děje spousta zajímavých věcí, programy jsou +- stejně rychlé jako ty v Javě (a všechny knihovny určené pro Javu jsou automaticky dostupné i ve Scale), má interaktivní prostředí, existují už nějaké pluginy do IDE (Eclipse, Netbeans, IDEA), velice dobrý vývojový nástroj SBT, webový framework srovnatelný s RoR nebo Djangem (Lift, nyní už ve verzi 2) a existují už velké úspěšné projekty v tomto jazyce (Twitter, LinkedIn a pár dalších), velice slibně se vyvíjí možnosti programování distribuovaných aplikací (Akka)... Programování GUI aplikací není ale nativní (psané na míru OS), nejčastěji se používá javovská knihovna Swing.