Těším se na inteligentní kompilátor

Tomáš Herceg       21.07.2008       VB.NET       12028 zobrazení

Na blogu Paula Vicka, jednoho ze členů týmu vyvíjejícího jazyk Visual Basic .NET, vyšlo v poslední době několik článků o nové verzi tohoto jazyka - Visual Basic 10. Současná verze 9 přinesla mnoho novinek, jubilejní desítka ale bude v mnohém daleko revolučnější.

Jednou z připravovaných novinek by měly být implicitní konce řádků. Visual Basic nemá céčkovou syntaxi, protože vychází z jazyka BASIC vzniknuvšího v 60. letech, dávno před céčkem, které je až z let sedmdesátých. V céčkových jazycích (C, C#, C++, Java, PHP atd.) se na konci příkazů píší středníky. Basic používá k oddělení příkazů znak konce řádku, tzn. na každém řádku jeden příkaz. Pokud je příkaz moc dlouhý a chcete pokračovat na dalším řádku, můžete na konec řádku napsat znaky mezera a podtržítko, a pak plynule pokračovat na řádku dalším. Pokud chcete naopak nacpat dva příkazy na jeden řádek, oddělíte je dvojtečkou.

Vzhledem k tomu, že tyto případy nenastávají příliš často, připadá mi daleko logičtější psát znaky navíc pouze v případě, když dělám něco výjimečného, než "zbytečné" středníky psát vždy a všude kvůli 1% případů, kdy budu mít moc dlouhý příkaz. Stejně je za 99% středníků v céčku konec řádku a před 95% konců řádků jsou zase středníky.

VB10 má mít ale implicitní konce řádků, to znamená, že sám pozná, jestli příkaz už končí, anebo pokračuje na dalším řádku. Pokud na konci řádku necháte například čárku nebo binární operátor, kompilátor si řekne, že se asi bude pokračovat na dalším řádku. To samé může fungovat, pokud necháte na řádku otevřenou závorku a pokračujete na řádku dalším. Velice pěkné je to u atributů, když chcete v současném VB použít atribut, musíte za něj uvést mezeru a podtržítko, pokud ho píšete na samostatný řádek. Pokud implicitní konce řádků budou, nebude to nutné. Velice užitečné to také bude u dotazů v LINQ, ty bývají dlouhé a je vhodné je strukturovat na více řádků.

Měly by přibýt také automaticky implementované vlastnosti, ty už C# má, a dále pár dalších věcí, které už podle mě nejsou tak zajímavé. Doufám, že se ve VB.NET objeví konstrukce yield return z C#, ta je velice užitečná.

Myšlenka chytrých kompilátorů se mi líbí, nevidím důvod, proč by měl být vývojář nucen striktně dodržovat pravidla, která v mnoha případech život spíše komplikují. Jsem pro to, aby kompilátor tam, kde to jde a kde to není sporné, uhodnul, co programátor chce, a udělal to. Implicitní konce řádků jsou věc, na kterou se opravdu hodně těším. Sekvence znaků mezera podtržítko není právě nejšťastnější a takto půjdou dělit dlouhé příkazy na více řádků i bez ní.

 

hodnocení článku

2 bodů / 2 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Těším se na inteligentní kompilátor

Jenom, probůh, doufám, že ta slibovaná inteligence nebude inteligencí ala MS Office. Ne, že bych měl něco proti tomuto balíku, považuji jej za to nejlepší v daném sektoru trhu a pracuji s ním takměř denně (dnes na 2003), ale pokud mi na tomto balíku něco vadí, pak je to jeho "přehnaná inteligence", kdy se mi občas stane, že s touto inteligencí bojuji mnohdy delší čas, než jsem potřeboval k samotnému sepsání dokumentu, protože si systém postavil hlavu, usoudil, co asi chci udělat, ale já myslel něco úplně jiného :-(

Takže tam, kde to jde, postupně jednotlivé "inteligentní schopnosti" vypínám, leč není to možné vždy a všude.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Svatá pravda. Zvlášť vtíravá funkce je zvětšování velkých písmen na začátku vět. Já přeci nejsem blbej a vím, že se na začátku věty píše velké písmeno. Word ale tvrdí, že je správně 13. Ledna 2008.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Těším se na inteligentní kompilátor

Uvítal bych anonymní metody a také yield return. To mi na VB asi nejvíc chybí. S konci řádků problém nemám, protože je zásadně nezalamuji... A také bych nepohrdl Case Sensitivitou.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obávám se, že case sensitivita ve VB nikdy nebude, je to jedna z klíčových vlastností jazyka. I když je pravda, že zpětnou kompatibilitu by ohrozit nemohla.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

V C# moc nedelam, ale case sensitivita je pricinou vetsiny erroru v mych "projektech".

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S tou Case sensitivitou to má dobře vyřešení C#, ta většinu věcí můžete psát malými písmeny a ona si je zvětší tam, kde jsou potřeba. U deklarací vlastností je skvělé, že privátní proměnnou pojmenujete stejně jako vlastnost, akorát nebude začínat velkým písmenem. To mi prostě ve VB.NET chybí, dvě věci nemůžete pojmenovat stejně. A na automaticky implementované vlastnosti si budeme ještě muset počkat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Těším se na inteligentní kompilátor

Tak speciálně u atributů a metod s mnoha parametry by se to vynechání podtržítek vážně hodilo. Taky by se mohly do VB.NET přidat anonymní metody jako v C#. Sem zvědav jak to dopadne.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback