Visual Basic vs. C # - Rozdiely a prechod medzi nimi
Čas od času sa na fóre objaví dotaz na tému C# (číta sa sie Sarp) × Visual Basic (skrátene VB), ich rozdiely, prednosti a podobne. Pretože poznám oba jazyky, pokúsim sa vám vysvetliť rozdiely medzi nimi a následný prechod medzi nimi.
Histórie
Najprv je potrebné sa pozrieť do histórie oboch jazykov. Visual Basic je tu s nami od roku 1991. V roku 2002 však prišla zmena, Microsoft Visual Basic .NET (.NET, čítame dotNET) teraz beží pod .net, rovnako ako zbrusu nový jazyk C #. Starý Visual Basic však nebol totožný s dnešným a preto množstvu vývojárov prechod na dnešné Visual Basic trval dlho a občas sa vykľuje jedinec, čo neprešiel dodnes.
Oproti Visual Basicu .NET C# raketovo vyrástol a VB.NET prekonal skoro vo všetkom. Dnes niektorí začínajúci vývojári o Visual Basicu nemajú ani tucha alebo za Visual Basic považujú stále ten starý.
Čo možno v týchto jazykoch programovať? Snáď úplne všetko. Klasické desktopové aplikácie, ako konzolové tak okenné a to hneď pomocou dvoch frameworkov (Windows Forms a Windows Presentation Foundation), serverové aplikácie (ASP.NET), moderné Windows Store aplikácie, mobilné Windows Phone a malé robotika (.NET micro Framework).
Syntaxe
Zdrojový kód je v C# značne kratšie, namiesto End If je v C# proste len zložená zátvorka}. Každý príkaz končí; čim je ľahké vopchať viac príkazov na riadok. Vo Visual Basicu ale u koncových značiek vždy viete čo tu končí, riadky sa zakončujú Enterom a ak chcete viac príkazov na jeden riadok, tak príkazy môžete oddeliť dvojbodkou:. Vo Visual Basicu sa ku všetkému možnému používajú kľúčové slová. Rozdiel je napríklad v dedičnosti a implementáciu rozhrania. Vo Visual Basicu bude kód nasledujúce:
Class MojeTrida Inherits MojeDruhaTrida Implements MojeRozhrani End Class
VC # tento kód bude značne kratšia, ale ak nedodržujte konvencie (rozhranie začína veľkým i) neviete čo dedí a čo implementujete, či dokonca môžete implementovať 2 rozhrania a to je ešte len guláš.
class MojeTrida : MojeDruhaTrida, MojeRozhrani {
}
Knižnica Microsoft.VisualBasic
Vo Visual Basicu je vo východiskovom stave importovaná referencie na knižnicu Microsoft.VisualBasic. Vďaka tejto knižnici môžete používať niektoré funkcie, ktoré v C# v predvolenom stave jednoducho nie sú. Dobrým príkladom je opak k MessageBox.Show (), pre získavanie hodnoty od užívateľa môžete použiť funkciu InputBox, ktorá zobrazí dialógové okno s textovým poľom, čiže máte ušetrené celkom dosť práce.
Táto knižnica má funkciu Beep (), môžete používateľa bombardovať pípaním. Alebo jednoducho cinkať pri udalosti, ktorá bežne necinká.
Knižnica obsahuje odbor názvu My v ktorom sú niektoré funkcie implementované jednoduchšie, napr. Odosielanie a sťahovanie súborov na / z internetu je vďaka My.Computer.Network veľmi jednoduché.
Pre C# isty mám dobrú správu, ak po tejto knižnici túžite tak si ju môžete pridať do referencií a budete mať tieto funkcie aj v C #.
Rozdiely v syntaxi
Aj napriek tomu, že sú tieto jazyky takmer totožné, nájdu sa rozdiely, ktoré sú v jednom z jazykov tak nejako nevyriešené.
Dosť zásadný rozdiel je aj v zápise cykle For, zatiaľ čo Visual Basic ho má veľmi jednoduchý, u C# si s tým môžete viac vyhrať. V skutočnosti je však možné v oboch jazykoch docieliť viacmenej rovnakého efektu.
Vo Visual Basicu k tomu dôjdeme jednoducho, určíme premennú, povieme kde začať a kde skončiť a tým to pre nás hasne.
For i = 0 To 4
UC # to je mierne zložitejšie, okrem toho že tu premennú musíme sami aj deklarovať, musíme určiť podmienku a potom aj zabezpečiť samotnú inkrementácia.
for (int i = 0; i < 5; i++)
Čo keď ale budeme chcieť vo Visual Basicu skákať nie o 1 ale napríklad o tri alebo dokonca o zápornej počty? Aj Visual Basic s týmto počíta, do definície pridáme kľúčové slovo Step s hodnotou čo sa má k tomu zakaždým pripočítať.
For i = 0 To -10 Step -2
Visual Basic má kľúčové slovo Handles, ktoré sa píše na koniec definície metódy, umožňuje odchytiť nejakej udalosti (oddeľujú sa čiarkou), aj bez nutnosti zbytočne zdĺhavého AddHandler. C# pre toto nemá žiadnu alternatívu. Na nasledujúcej ukážke je vidieť použitie kľúčového slova Handles a metódy fukce UploadFile, ktorá sídli v knižnici MicrosoftVisualBasic.
Private WithEvents tmr As New Timer() Private Sub SendData() Handles tmr.Tick, btnSend.Click My.Computer.Network.UploadFile("C:\data.txt", "ftp://mujserver.com/data.txt", "root", "*****") End Sub
Visual Basic vie znova alokovať pole pomocou kľúčového slova riedime, ak pole potrebujete vytvoriť znovu (napr. Ste zistili že ho potrebujte väčší - dosť častý jav) tak použijete práve tento príkaz. C# pre neho ale nemá žiadnu alternatívu.
Visual Basic má operátor ^, ktorý slúži na umocňovanie premenných na ntou.
Dim c As Integer = 3 ^ 2
Výsledkom uloženým vc bude 3 na 2 (čiže 9).
C# má operátormi pre inkrementácia a dekrementace, týchto operátorov vo VB.NET nenájdete.
C# má oproti Visual Basicu viacriadkové komentáre.
Toto boli príklady rozdielov, kde riešenie nie je až zas tak jednoznačné a ľahké. Všetky možno nejako obísť. Pri výbere jazyka by toto nemalo hrať žiadnu úlohu.
Prechod medzi jazykmi
Prechod medzi jazykmi je veľmi jednoduchý, v zásade ide len o tom zvyknúť si na syntax a potom to ide samo. Rozdielov je tak málo, že je v bežnom použití ani nespoznáte.
Automatický prevod kódu robotom
Existuje jedna služba, ktorá umožňuje prevod zdrojového kódu práve medzi jazykmi C# a Visual Basic. Je na webe developerfussion úplne zadarmo. Nefunguje dokonale (niektoré perličky nezvládol previesť), ale pre väčšinu úloh je plne dostačujúca. Neodporúčam ju pre prevod celého projektu, ale napríklad keď chcete previesť ukážku zdrojového kódu, hodí sa skvele.
Ručný prevod kódu
Ručné prevod kódu je samozrejme možný, ale je dobré sa zamyslieť, či nie je zbytočný. Niekedy je lepšie kód dopísať v pre vás sekundárnom jazyku než sa zaoberať prevodom, čo je iba čas navyše.
Rada na záver
Pretože syntax Visual Basicu stavia na kľúčových slovách, nie je úplne na škodu s ním pri výučbe začať. Prechod na C #, po ktorom je oveľa väčší dopyt, je potom veľmi jednoduchý. Ak už viete C #, prechod na Visual Basic je zbytočný, kód vám príde zdĺhavý a navyše po Visual Basicu nie je až zas tak vysoký dopyt ako po C #. Ak už viete nejaký jazyk a nepotrpíte si na Basic like syntax, tak Visual Basic určite nevoľte. Ak sa rozhodujte pre C #, tak verte, že nemáte čo stratiť.