Programujeme ve Visual Basic .NET - 2. díl - Hello, world

Diskuze čtenářů k článku

jiri  |  30. 03. 2005 21:12

stáhl jsem všechny verze Snippet Compileru z odkazů, ale po rozbalení a spuštění naskočí akorát chybové microsoftí hlášení:SnippetCompiler.exe - Chyba aplikace
---------------------------
Správná inicializace aplikace (0xc0000135) se nezdařila. Klepnutím na tlačítko OK můžete aplikaci ukončit.
---------------------------
Zkoušel jsem to na 2 PC. Co dělám blbě?

Souhlasím  |  Nesouhlasím  |  Odpovědět
Erender  |  27. 10. 2005 10:54

Presne tak, ten istý problém mám aj ja.

Souhlasím  |  Nesouhlasím  |  Odpovědět
RoadMagor  |  31. 08. 2004 13:21

Začínající seriál sice asi bude fajn, ale při frekvenci 1 díl/týden potrvá dost dlouho, než bych se něco trošku naučil.
Nevíte někdo o nějaké šikovné knize o VB.NET (nebo ani nemusí jít o .NET), která by byla šikovná pro začátečníka? Zkušenosti s programováním mám, ale v jiných jazycích.

Za každou radu předem dík.

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  31. 08. 2004 16:50

Pokud máte zkušenosti s programováním, opravdu nepotřebujete vykládat o tom, jak se používají proměnné a cykly, ale spíš se budete potřebovat seznámit s prostředím .NET a Visual Studio. V tomto směru Vám mohu doporučit  např. volně dostupné publikace - brožury s vývojárskou tématikou od Microsoftu.

http://www.cznorth.net/index.php?north=manual.php&session=

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  31. 08. 2004 16:59

Jinak doporučuju se občas na seriál kouknout, protože zhruba od desátého dílu budou probírány informace o .NETu, kterých zatím mnoho v ucelené formě na českém webu není.

Ještě přikládám linky na dva velké rozcestníky informací o Visual Basicu (VB i VB.NET) na webu, jistě časem narazíte na další

http://www.cetus-links.org/oo_visual_basic.html a

http://www.codebox.8m.com/visualbasic.htm

Souhlasím  |  Nesouhlasím  |  Odpovědět
sappy  |  30. 08. 2004 11:07

Zdravim,

odkaz pod clankem na prvni dil je spravne?

sappy

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:52

Ano, teď jsem jej zkoušel a funguje - není součást článku, ale je generován redakčním systémem.

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:56

...ale teď sám vidím, že vede na první díl seriálu o původní verzi Visual Basicu, jehož příprava byla pozastavena ve prospěch VB.NET 

Budu o tom informovat redakci.

Souhlasím  |  Nesouhlasím  |  Odpovědět
sappy  |  30. 08. 2004 14:09

To jsem mel na mysli

Diky

Souhlasím  |  Nesouhlasím  |  Odpovědět
Jarek  |  30. 08. 2004 11:06

odkaz na vývojové prostředí nefunguje. Hlásí Service unavailable

Souhlasím  |  Nesouhlasím  |  Odpovědět
sappy  |  30. 08. 2004 11:24

nefunguje, pokud na nej kliknes, ale pokud jej napises do radku tak ti ta stranka naskoci. Osobne jsem se na tu stranku dostal z jineho zdroje.

sappy

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:36

Patrně je tam kontrola na referer na linkování z jné domény....

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 15:27

Máte skutečně pravdu - ráno ten link ještě fungoval, děkuji za upozornění...
Doufám, že jsem tomu chudákovi neodstavil web tím, že jsem na Živě nalinkoval jeho produkt...

Pro jistotu přikládám link na mirror http://zephir.wz.cz/vbnet/SnippetCompiler.zip s poslední verzí Snippet Compiler 1.11.01
jakož i link na soubor s konfifguraci, pokud používáte starší verzi .NET Framework 1.0:
http://zephir.wz.cz/vbnet/SnippetCompilerConfig.zip

Souhlasím  |  Nesouhlasím  |  Odpovědět
Luděk Roleček  |  30. 08. 2004 10:05

1) Kde je onen v nadpisu avizovaný program Hello World? Tolik jsem se na něj těšil a ono nic

2) Nechápu, proč autor doporučuje VYPNOUT volbu Option Explicit. Možná to někomu připadá jako dobrý nápad, že pak nemusí deklarovat proměnné, ale ubezpečuji každého, že za problémy způsobené v budoucnu například jednoduchým překlepem v názvu proměnné to ani zdaleka nestojí.

Jinak si nemohu pomoci, ale ať na tenhle článek koukám jakkoliv, tak mám pořád dojem, že kromě odstavce o tom, že se jako první spouští procedura Main, a odstavce o tom, že SnippetCompiler umí zvýrazňování syntaxe, je to úplně (obsahově) stejné jako první díl. Doufám, že další díly budou lepší, dobrý seriál o VB.NET bych přivítal.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Luděk Roleček  |  30. 08. 2004 10:12

Napsal jsem to špatně - články nejsou obsahově stejné, ale zdá se mi, že druhý díl přinesl naprosto mizivé množství nových informací. Ale možná je to jen můj subjektivní dojem.

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:12

Jak jsem již v komentářích k prvnímu dílu seriálu uvedl, striktní požadavek redakce (kvůli kterému bylo také několik úvodních dílů přepisováno) zněl, aby seriál byl přístupný úplným začátečníkům, a to nejenom v jazyce Visual Basic, ale v programování jako takovém a neobsahoval žádné logické skoky a odkazy na implicitní informace. Z tohoto důvodu Vám může několik prvních dílů seriálu připadat nezáživných a s nízkým obsahem pro Vás nových informací.

Na druhé straně nejsem v debatě pod článkem podobným omezením vázán a proto samozřejmě uvítám připomínky a náměty k diskusi zde, kde se můžeme sporným záležitostem věnovat podrobněji. Pokud se zde vyskytnou podněty závažnějšího rázu, samozřejmě je zapracuji i do znění článků.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Luděk Roleček  |  30. 08. 2004 10:36

Teprve teď zpětně jsem si přečetl komentáře pod článkem prvního dílu a musím přiznat, že autor má seriál zřejmě docela dobře rozmyšlený a rozhodně umí svoje názory celkem dobře obhájit. Takže své výtky beru zpět a radostně očekávám další díly :)

I když s tím Option Explicit pořád nevím - opravdu je pro začátečníky lepší to vypnout? Možná to vypadá, že je pak VB.NET přísnější a pořád po člověku něco chce, ale tak to přeci není. Já beru Option Explicit hlavně jako ochranu proti svým chybám a překlepům, které rozhodně nedělám tak zřídka, jak bych si přál :)

Příklad:

pocetKolecek = 10
pocetKolecek = pocetLokecek + 1
System.Console.WriteLine(pocetKolecek)

A chudák začátečník se pak může uzoufat, proč mu to jako výsledek píše 1, než mu po několika dnech jeho 3 letá sestra řekne, že tady na tom 2. řádku má překlep v názvu proměnné.

Souhlasím  |  Nesouhlasím  |  Odpovědět
00,0,,  |  30. 08. 2004 10:50

Tohle by se jaksi ani neprelozilol...

Souhlasím  |  Nesouhlasím  |  Odpovědět
Mem  |  30. 08. 2004 13:29

A proc ne?

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:34

Noo... - pokud by jste skutečně vypnul kontrolu explicitních deklarací (příkazem Option Explicit Off, nebo parametrem překladače, jako to dělá Snippet Compiler), pak by se vám ukázka nejen bezproblému zkompilovala, ale byla by i plně funkční. Pokud není uveden typ proměnných, VB.NET pracuje se všemi proměnnými jako s objekty, deklaruje je dynamicky (tj. při prvním výskytu názvu proměnné v kódu) a umožňuje jim kdykoliv přiřadit prakticky libovolný obsah - podobně jako např. JavaScript, nebo Python.

Výhodou prostředí VB.NET je, že vás k deklaracím nenutí, ale přidáním jednoho řádku do programu tuto kontrolu zapne. Je tedy jen na vás, zda při psaní několikařádkového skriptu budete dodržovat zásady deklarace proměnných před jejich prvním použitím, nebo ne.

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:25

Máte samozřejmě naprosto pravdu a vypnutí typové kontroly rozhodně nepatří do zásad profesionálního programování. Na druhé straně potřebuji demonstrovat základní struktury jazyka na funkčních ukázkách ještě dříve, než se proberou datové typy a také bych rád demonstroval fakt, že VB.NET není zbytečně překombinovaný a že začátečníci své nabyté znalosti mohou okamžitě využít při psaní použitelných porgramů. Takže - pokud zde ta možnost je a VB.NET ji nabízí - využil jsem ji s tím, že s samozřejmě k typové kontrole a deklaracím proměnných vrátím v nejbližším možném díle a pak ji již budu používat striktně i nadále.

Na druhé straně "skript kiddie" styl, jaký budu předvádět v úvodních  (cca deseti) dílech seriálu není až zas tak úplně neopodstatněný - uvědomme si, že typová kontrola je velmi slabá i u většiny dynamických jazyků (jako je Java/VBScript, Python) a další (aka PHP) - což nikterak nebrání tomu, že se v nich při větší pozornosti a dodržení jistých zásad dají psát velmi rozsáhlé projekty. V krátkých demonstrativních projektech (jakým se budeme věnovat v následujících dílech převážně) je pak význam typové kontroly spíše didaktický.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Mem  |  30. 08. 2004 13:31

Ano, to PHP me s timhle maximalne vytaci, to ale neni omluva pro to, aby se tak psalo i ve VB .NET

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:48

To je samozřejmě pravda, <flame>na rozdíl od PHP a jemu podobných je VB.NET plnohodnotné vývojové prostředí</flame>, a nezaslouží si, aby byl používán jako nějaký skriptovací jazyk - takže nejpozději od šestého dílu seriálu začneme proměnné před použitím deklarovat a nejpozději od desátého je začneme deklarovat i s typem....

Problém je, že kdybych s typovými deklaracemi začal ihned, musel bych vysvětlit jak deklarace a inicializace, tak datové typy a rozdíly mezi datovými typy, třídami a objekty a ke skutečnému programování bych se nedostal dříve než takovém pátém, šestém díle a seriál byl pro začátečníka ještě nudnější, než doposud. Zatímco bez výkladu typových deklarací budeme mít v šestém díle seriálu většinuprogramových konstrukcí jako jsou cykly a podmínkové příkazy a v podstatě díky tomu psát libovolně složité programy - je tu tedy jisté pedagogické dilema, které jsem vyřešil příklonem k vyšší jednoduchosti pro začátečníky za cenu obtížnější přenositelnosti a udržovatelnosti kódu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Ludek Rolecek  |  30. 08. 2004 13:41

Jsně, rozumím vám. Jak jsem psal už v předchozím příspěvku - komentáře k prvnímu dílu (a v nich i vaše vysvětlení) jsem si přečetl až zpětně. Vaši argumentaci naprosto beru. Chápu, že každý seriál nějakou tou omáčkou a nezbytně jednoduchým úvodem prostě začít musí. Těším se na další díly a díky za seriál.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Ludek Rolecek  |  30. 08. 2004 13:48

Zase jsem nenapsal všechno, co jsem chtěl, takže doplňuji:

K té typové kontrole - v podstatě souhlasím s tím, že pro úplného začátečníka je jednodušší a srozumitelnější typovou kontrolu neprovádět. O tom jsem ale nemluvil - typová kontrola se zapíná direktivou Option Strict. Mě se ale nezdálo vypnutí právě a jedině direktivy Option Explicit, která nenutí uživatele k ničemu jinému, než k DEKLAROVÁNÍ proměnných, typ nemusí uvádět a typová kontrola se neprovádí. Jde tedy skutečně jen o to, že se zabrání překlepům a následně záhadně se chovajícím programům jen v důsledku překlepu v názvu proměnné, kterou kompiler neohlásí jako chybu (viz. předchozí příklad se sčítáním). Podle je pro začátečníka naopak daleko lepší tuto direktivu zapnout - musí sice každou proměnnou deklarovat, ale na každý případný překlep ho kompiler upozorní chybou, že daná proměnná nebyla deklarována. S vypnutím Option Strict pro začátečníky naopak souhlasím.

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 14:11

Jasně. Jak jsem již uvedl, vaše argumenty plně akceptuji a k deklaracím se vrátím, jakmile proberu základní programovací struktury. Důvod je ten, že s jejich znalostí můžete psát libovolně složitý a strukturovaný kód, zatímco se znalostí deklarací proměnných nikoliv, čehož většina skriptovacích jazyků s gustem využívá...

Čili priorita, se kterou se věnuji deklaracím není opominutí, ale chladnokrevný záměr a klidně bych toto pořadí i obrátil - ale bohužel jsem úvodní díly seriálu, již předal redakci, která je s předstihem zavádí do redakčního systému. Nebudu tedy moci na všechny připomínky reagovat s dostatečným předstihem - ale slibuji, že až budu vykládat o významu a důležitosti deklarací, Váš příklad určitě uvedu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
milos  |  30. 08. 2004 07:49

V programu je "Pro ukončení stiskni ENTER" a na obrazovce se napíše "Pro ukončení stiskněte libovolnou klávesu"
Nevím, programováním se nezabývám asi 10 let, ale ReadLine bude asi vyžadovat Enter. Nebo se pletu?

Miloš

Souhlasím  |  Nesouhlasím  |  Odpovědět
cicobasket  |  30. 08. 2004 09:46

Tak si precti co je v programu a ne co mas na obrazku codere .) .

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:04

Máte pravdu, a desetiletá pauza zjevně nezanechala na logice Vašeho uvažování stopy... 

Skutečně jsem nedopatřením použil starší verzi obrázku, která nebyla synchronizovaná s ukázkou kódu, za což se pochopitelně omlouvám.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Yarda  |  30. 08. 2004 07:31

ale bezici v prostredi Windows?

Souhlasím  |  Nesouhlasím  |  Odpovědět
Nezmar  |  07. 01. 2005 21:47

QBasic is death :o)

Souhlasím  |  Nesouhlasím  |  Odpovědět
rychna  |  30. 08. 2004 00:26

Zalezi na tom?

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 01:12

Ne. Ale je to konvence, kterou používá nejrozšířenější vyvojové prostředí pro VB.NET, MS Visual Studio.NET (ale i některé další, jako free SharpDevelop). Pokud ty ukázky napíšete / vlepíte do jeho editoru, VS.NET upraví  velikost písmen klíčových slov podle ukázky. Můžete si zavést vlastní konvenci a bez problému ji používat, ale pak musíte počítat s tím, že si ji prostředí VS.NET ji upraví podle svých představ - proto doporučuji si zvyknout na tuhle.

Velikost písmen u uživatelsky definovaných názvu, jako jsou procedury a proměnné samozřejmě VS.NET nechá na pokoji - a v tom případě je jen na vás, jakou konvenci pro jejich používání zvolíte. Osobně nejčastěji používám tzv. zjednodušenou maďarskou notaci, která je zavedena v celém prostředí .NET Framework. První písmeno proměnných a funkcí je vždy velké, ale zpravidla mu předchází označení typu (mod jako Module, a jako Array, cls jako Class apod.).

Takže pro název hlavního modulu používám zpravidla označení modMain, pro označení proměnné Count typu Integer iCount, pro označení pole Jablka název aJablka, apod. Proměnné bez explicitního uvedení typu jsou ve VB.NET vždy typu Object, takže by měly začínat předponou o-, nebo obj..

Je celkem jedno, jaký systém pro pojmenování proměnných si zvolíte - je ale vhodné se jej držet, chcete-li se ve svých starších programech bez problémů orientovat, proto doporučuji si zásady notace prostudovat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 01:14

Ještě přikládám odkaz na zásady maďarské notace na MSDN (původně uvedený link z mého příspěvku po odeslání nějak zmizel...)

http://msdn.microsoft.com/library/techart/hunganotat.htm

Souhlasím  |  Nesouhlasím  |  Odpovědět
David Pokluda  |  30. 08. 2004 09:32

Maďarská notace by se již neměla používat!. Microsoft jí velmi používal ve svých SDK a knihovnách (např. knihovna MFC používala maďarskou notaci), ale to je minulost

Jelikož nevýhody maďarské notace předčí výhody, tak Microsoft nyní dává všemožně najevo, že si nepřeje, aby programátoři tuto notaci dále používali:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconparameternamingguidelines.asp

David.

Souhlasím  |  Nesouhlasím  |  Odpovědět
milanpetrik@atlas.cz  |  30. 08. 2004 13:00

Děkuji za info !

Moje zkušenost s maďarskou notací je, že důsledné lpění na ní zbytečně prodlužuje názvy proměnných, ale může pomoci při rozlišování datových typů parametrů v deklaracích, kde ji MS používá i nadále.

Typicky např.:

Declare Function GetExitCodeThread Lib "kernel32" (ByVal hThread As Long, lpExitCode As Long) As Long

Z tohoto důvodu ji pro tyto situace používám rovněž.

Souhlasím  |  Nesouhlasím  |  Odpovědět
cicobasket  |  30. 08. 2004 18:07

No ja si na Madara nikdy nezvykl. Ta nynejsi notace(aspon co jsem cetl co MS doporuceje pro C#) je pohode.  Ta fce z jadra tam bude imho jenom kvuli zpetny kompatibilite. Novy fce a nazvoslovi se jede uz Welbloudem s malyma pismenkama pro privates aj. a to me vyhovuje.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor