Jsem mladý a naivní, ale lepší se to :)
Programovacích jazyků znám jen hrstku – reálně jsem pracoval s Pascalem, Javou, PHP a C#, nějakou tu knížku jsem prolistoval o Visual Basicu .NET, Pythonu a tak, ale že bych byl teoretický znalec jazyků, tak to ani náhodou. Přes svou malou zkušenost jsem postupem času sám sebe přesvědčil, že jazyk nehraje roli a že vždy záleží na „frameworku“. Posuďte sami:
Pascal jsem opustil ve prospěch Javy a její syntaxe byla intuitivní a snadná, ačkoliv podoba s Pascalem není tak úplně blízká. Pravý problém byl naučit se Javovskou class library, aby se taky dalo naprogramovat něco jiného než hello world. „Krok stranou“ z Javy do světa PHP byl rovněž snadný, syntaxe je velmi podobná a tak jediným reálným úsilím bylo naučit se novou sadu funkcí. Z Javy do C# to byla po syntaktické stránce úplná pohádka, některé věci by šly skoro 1:1 zkopírovat a spustit. Opět jsem však musel investovat čas do učení Frameworku, tentokrát s velkým F.
Zkušenost mě naučila, že jazyk není problémem. Objektová orientace, známá trojka „sekvence-selekce-iterace“, prostě nic, co by člověka mohlo překvapit.
Určitý první náznak toho, že by můj světonázor nemusel být tak
úplně správný, bylo setkání s Ruby. Některé věci se mi velmi
líbily (jako třeba "Nice Day Isn't
It?".split(//).uniq.sort.join
), ale některé jsem prostě na první
pohled nepochopil (třeba closures).
Uklidňoval jsem se tím, že dynamické jazyky jsou pro mě velkou neznámou a
že v jazyku typu C# mě podobné překvapení čekat nemůže…
Cha cha. Právě jsem shlédnul track TLN307: C#: Future Directions in Language Innovation (budete potřebovat IE nebo se spokojte s PPT prezentací, ačkoliv Anderse stojí za to vidět) a to mě zcela zbavilo iluzí. Doposud jsem C# 3.0 vnímal jen jako „2.0+LINQ“, ale takové věci jako lambda výrazy, extension methods, detaily fungování anonymních typů nebo komplikované compile-time odvozování typů v LINQ výrazech mě prostě vyrazily dech.
Jazyk hraje roli. Nové konstrukty sice „jen“ ulehčují práci, kterou by šlo zařídit i nějak jinak, ale o vývojářskou efektivitu jde přece až v první řadě :)
S C# 3.0 si hraju už delší dobu a docela se mi líbí. Bude to opravdu něco jiného, než Java a kolegové v práci se C# 3.0 posmívají ;-).