Diskuze: VB.NET nebo Object Pascal
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Michal Štěpánek:25.9.2017 6:07
Začínal jsem před lety na VB.NET (vlastně tenkrát to ještě ani nebyl
VB.NET, jen Visual Basic), protože se mi taky líbila "člověkem čitelná
syntaxe". Záhy jsem ale zjistil, že pokud chci naprogramovat něco
složitějšího, hodně těžko se shánějí na VB.NET nějaké návody,
protože většina programů se dělá spíše v C#, než ve VB. Nezbylo mi nic
jiného, než se "přeučit" na C#. Zpočátku jsem se toho obával, připadaly
mi chaotické ty složené závorky, ale vůbec to nebylo tak strašné, jak
jsem si myslel. Takže moje rada zní takto:
Koukni se jaká je k tomu dokumentace (resp. manuály na učení), jak snadno
lze najít různé návody a jak velká je komunita programátorů věnující
se tvému oblíbenému jazyku a podle toho se rozhoduj, kterou cestou se
vydáš...
David Hartinger:25.9.2017 9:44
Object Pascal je mrtvý již poměrně dlouho. Aplikace, které jsi jmenoval,
jsou povětšinou starými patrioty, byly vytvořené v době, kdy Delphi
ještě letělo a teď se to nikomu nechce přepisovat. VB.NET je sice aktivní
jazyk, ale je udržován spíše pro výukové účely (např. se často učí
ve školách), také nevím o ničem, co by v tom bylo napsané. Jelikož
programovací jazyky mají opravdu jen málo klíčových slov a syntaxe vůbec,
stejně jako kolega výše bych ti doporučoval naučit se spíše nějaký
moderní a populární jazyk, ono jestli člověk napíše endif
nebo }
je ve finále jedno, je to věc zvyku.
Michal Štěpánek
Já jsem kdysi ve VB.NET pár věcí udělal, ale to nebylo žádné
programování, prostě jsem si našel kód a aplikaci jsem si upravil podle
svého (především po vizuální stránce). Vše, co jsem tenkrát hledal jsem
našel, takže doufám, že se toho od těch odb moc nezměnilo.
Jak jsem říkal, na nic složitého se nechystám, tak by snad neměl být
problém si nějaké návody k VB.NET vyhledat.
David Hartinger
Mě se na těchto aplikacích líbí právě to, že reagují velice svižně, v
paměti nezabírají mnoho místa a působí na mě takovým nativním dojmem.
Ostatně, netuším, jestli je to díky Object Pascalu jako takovému, nebo
kvůli samotnému návrhu dané aplikace.
Máš pravdu, že VB.NET není příliš perspektivní, ale jak jsem říkal,
budu programovat většinou pro své účely - většinou se bude jednat o
automatizaci matematických výpočtů, nebo různé převody a šifry. Je mi
tedy jedno, jestli s ním najdu nějaké širší uplatnění.
Ano, styl zápisu je o zvyku, ale přeci jen, ze začátku bych rád začal s
něčím "lidštějším"
Kdybych se někdy chtěl do programování pustit nějak vážněji, přešel
bych na C#, a to ne proto, že by se mi víc líbil, ale kvůli tomu, že je na
trhu přeci jen větší poptávka (ikdyž netuším proč, když je to ve
finále stejně jedno, když je to pod .NETem).
Mě by teď především zajímalo, který ze zmíněných jazyků je pro mé
účely občasného programátora vhodnější.
Nebo pokud tyto dva jazyky vypustíme, který by jsi mi pro mé účely
doporučil nejvíce? Tedy kromě Pythonu, ten moc nemusím
Michal Štěpánek:26.9.2017 8:32
Taky jsem si páchal věci ve VB.NET, ale stačilo, aby tam bylo něco
nestandardního a najednou vznikl problém, že komunita VB.NETařů zdaleka
není tak rozsáhlá, jako pro C# a v podstatě nebylo pořádně koho se
zeptat. Od doby, kdy jsem se "přeorientoval" na C#.NET je pro mě
programování mnohem jednodušší. Postupně jsem opustil WinForms a začal
jsem s WPF a hlavně teď páchám webové aplikace v ASP.NET MVC. Když se
naučíš C#, není až takový problém něco přepsat do VB.NET.
Ovšem podpora C# je skutečně mnohem, mnohem větší...
Object Pascal
kdysi jsem na Object Pascalu začínal v Deplhi, takže nedávno jsem z nostalgie zkusil Lazarus (velmi zdařilá napodobenina Deplhi pro Windows/Linux/Mac)
komunita je velmi aktivní, zásoba knihoven a prvků grafického rozhraní
dostatečná
Takže Object Pascal vůbec není mrtvý, jak tady kdosi tvrdí
Pokud ovládáte angličtinu, tak nebudete mít problém nastartovat
viz třeba videokurzy zde:
https://www.youtube.com/results?…
Jak velká je kompatibilita se staršími windows, komunita tvrdí, že "no
problem", takže to bude asi stejné jako u jiných jazyků
Tedy základ "no problem" a ostatní záleží na použitých vlastnostech OS
Windows
U matematických konzolových prográmků ale s kompatibilitou určitě
nenarazíte
A obecně si myslím, že od Windows XP SP 3 asi nebude moc problém celkově a
ve Windows 7 už vůbec.
VB.NET
Co se týče VB.NET, tak ten má výhodu v
- bohaté dokumentaci na stránkách Microsoftu (se strojovým překladem do srozumitelné pseudočeštiny ), stejně, jako je tomu u C#
- dostupnosti nejedné knihy v češtině o VB.NET
- knihovnách funkcí, které jsou dostupné pro C#, fungují automaticky aj pro ostatní jazyky na .NET platformě, tedy i pro VB.NET
- nemusíte narozdíl od Object Pascalu hlídat uvolňování paměti u dynamických datových struktur, což (alespoň pro mě) je velká úleva
kompatibilita se staršími Windows ... prostředí .NET Framework 4.5 a
vyšší nepodporují Windows XP SP3
takže je potřeba nastavit vždy v projektu nižší verzi, pokud budete chtít
Win XP podporovat ve svém programu
pak záleží jestli v programu použité knihovny jsou dostupné i v .NET verze
2.0
ale opět, pro konzolové matematické prográmky stačí přepnout na .NET 2.0
a více se nestarat
Závěr
Podle mě asi záleží na tom
- jak moc ovládáte angličtinu pro čtení dokumentace nebo sledování videí
- který jazyk se vám líbí víc
- jestli si chcete sám hlídat práci programu s uvolňováním naalokované
paměti a nebo to necháte na běhovém prostředí
v Object Pascal musíte paměť hlídat sám a chce to velkou pečlivost, aby vám pak program nepadal
ve VB.NET vám problémy s dáváním si pozor na paměť víceméně nehrozí
+20 Zkušeností
+2,50 Kč
Jirka Jr:26.9.2017 12:58
oprava: na Windows XP SP3 nemusíte používat .NET verze 2.0, můžete až po 4.0 včetně, což je až až
Jirka Jr
Angličtinu zvládám jakž takž, s tou by neměl být problém.
Na Object Pascalu se mi líbí právě ta skutečnost, že program v něm napsaný mi pojede i na Windows 95. Na druhou stranu, Lazarus mi přijde jako extrémně zmatená aplikace. Přepnutí do jediného okna jsem zkoušel, ale bez úspěchu.
Na VB.NETu se mi líbí provázanost s .NETem, na druhou stranu to ale beru jako jistou nevýhodu, která mě při použití tohoto jazyka omezuje.
Který jazyk byste volil vy?
Mimochodem, to hlídání paměti probíhá jak?
Jirka Jr:26.9.2017 17:05
osobně doporučuji cílit na Windows 7, nejníže však na Windows XP SP3
... problémy s nižšími verzemi Windows by vydaly na celou knihu
povídání
Windows 95 ale každopádně ne ... to už se snad nepoužívá ani v továrně
bez připojení k internetu ... tam už mívají většinou Windows 2000 i u
těch nejstarších potvor
a i ty největší noční můry všech servisujících kamarádů snad už
doufám mají alespoň windows 98 nebo XPčka
ale předpokládejme, že vaše programy půjdou na Windows XP SP 3 a vyšší ...
osobně bych volil VB.NET nebo C#.NET, protože .NET mám prostě rád a jsem línej se otravovat se správou paměti
Lazarus jsem si nedávno ozkoušel z nostalgie k mým začátkům a zvolil bych jej, kdybych
- potřeboval vyrobit program běhající jak na Windows, tak Linux a Mac OS X
(pokud bych tedy nezvolil raději Javu)
protože i na Linuxu mi zfleku hned fungoval a nabízený příklad se bez remcání hned zkompiloval a spustil
- nebo bych měl doma starý šrot, na kterém by Visual Studio běhalo pomalu a dráždilo mi tak nervy
- a nebo by u mého programu zásadně záleželo na rychlosti a cílový počítač by nestíhal ... ale v hobby sféře na toto s dnešními počítači už nenarazíte
Kromě toho komerční Delphi stále existuje a stále se vyvíjí pod vlajkou firmy
Embarcadero
Ale nezkoušel jsem ho, takže je to na vás, jestli do toho půjdete ...
Nároky na provoz Visual Studia (provoz studia, nikoli cílový počítač vašeho programu):
Na nejstarší momentálně ještě stažitelnou verzi Visual Studia ... tedy 2010 ... mi v roce 2010 stačil počítač s Intel Core2Duo 1.8 Ghz, 2GB RAM a klasický mechanický pevný disk připojený na rozhraní SATA I ... OS Windows XP SP3
Nejnovější verze 2017 se mi na starším Core2Quad 2.5Ghz se 4GB RAM a mechanickým diskem na SATA II občas zamyslí, ale na domácí koníčkování je to bez problémů a se SSD diskem, jen co ho nainstaluju to bude na jedničku ... OS Windows 10
Co se týče správy paměti, tak jde např o zpracování složitějších
nebo větších datových struktur
např.
- xml/html/json data (různé extrakce dat z webových stránek, šahání z programu na google a na různé jiné stránky a služby)
- práce s databází
- struktury vyžadované funkcemi z použité knihovny funkcí
- programování dynamických webových stránek
- evidenční programy pracující s nejrůznějšími záznamy
- ...
všude, kde za běhu řeknete operačnímu systému, že má vyhradit X
bloků paměti o velikosti Y, musíte na závěr programu či procedury tuto
paměť dealokovat
nesmíte šáhnout ani o pozici dále, než je vám v rámci bloku dovoleno,
což je v cyklech častá chyba lidského faktoru
často se vám to zamotá tak, že vám program někde padá a vy nevíte, kde
je problém a sedíte u toho dny/noci
.NET na konci funkce, bloku, programu automaticky ruší bloky paměti,
které nazná, že už nejsou potřeba
ladění případných překročení alokovaného rozsahu má řešeno
pohodlněji
atd. atd.
Když nemusíte tolik řešit správu paměti, tak i jako začátečník se
dřív můžete pustit dál
je to něco jako ruční řazení v autě versus automat ...
profesionální závodník s automatem prohraje s ostudou
ale ten, kdo pojíždí po městě, nebo jede jednou za x měsíců na
dovolenou, ten se nemusí s ručním řazením otravovat a může se věnovat
něčemu zábavnějšímu
existují i další jazyky, které si nějakým způsobem samy hlídají
paměť, jako Python, Perl, Java
a měl byste asi o trochu větší šanci s nimi uspět i na Windows 95 než s
VB.NET, pokud je to pro vás tak důležité a pokud stáhnete nějakou starší
verzi prostředí pro tyto jazyky
ale nevím, nakolik by se vám zamlouvala "lidskost" či "nelidskost" jejich
zápisu
a občas skrývají ve skříni šotky, které snižují programátorovo
pohodlí a vydaly by na další kapitolu tohoto povídání ...
toť zatím vše ... zbytek nechám na případné další dotazy
Jirka Jr:26.9.2017 17:21
"Na VB.NETu se mi líbí provázanost s .NETem, na druhou stranu to ale beru jako jistou nevýhodu, která mě při použití tohoto jazyka omezuje."
nevím, které omezení máte konkrétně na mysli ...
ale pokud jde o dostupnost různých funkcí operačního systému, tak to jak u
.NET tak u Delphi záleží, jestli vám někdo předprogramoval
komponentu/knihovnu
Pokud taková knihovna ještě není, tak jak v Delphi, tak v .NETu můžete
volat funkce OS přímo
Nevím, jak přesně to má Delphi, ale vím, že to umožňuje
V VB.NET mrkněte na příklad v dokumentaci od Microsoftu
Osobně jsem nedávno potřeboval u programu nastavit nejen prioritu na procesoru (to se dá přímo v .NETu), ale i prioritu v přístupu na disk, aby mi prográmek neobsadil přístup na disk a nezpomalil ostatní programy (to už .NET v knihovnách nemá)
Použil jsem výše uvedenou vlastnost DllImport podle příkladu vyhledaném přes google a vše jelo jak mělo
Staré Windows 95 byly pouze příklad, na druhou stranu mám PC s Windows 2000, který občas používám, je to taková nostalgie. Ale pokud pod ním alespoň ten .NET 2 jede, tak by to mělo být OK.
S posledním Visual Studiem (stejně tak, jako s Lazarusem) jsem se již tak
trochu seznámil. Počítač sice nemám nejrychlejší, ale Visual Studio 2017
na něm běží celkem obstojně.
Našel jsem ještě alternativu s názvem SharpDevelop 4.4 (nevím, jestli
znáte), která mi přijde v některých ohledech lepší než samotné Visual
Studio. Jednak je výrazně rychlejší, nezabírá tolik místa a alespoň v
základních věcech obstojí stejně dobře.
Je trochu na škodu, že není VB.NET multiplatformní. Sice vím o Monu a
dotGNU, ale nevím, jak jsou na tom se stabilitou a celkovou funkčostí. Máte
s němi nějaké zkušenosti?
Co vím, tak je ve Visual Studiu implementován Xamarin. Pokud bych
prostřednictvím Xamarinu udělal ve VB.NETu aplikaci pro Linux (popř. Mac
OS), bylo by ji možné spustit na dané platformě bez Mona, nebo na jakém
principu to funguje?
Jako omezení beru fakt, že plaforma .NET je doma pouze na Windows a dále
fakt, že pro běh sebejednoduššího programu se bez .NET Frameworku
neobejdu.
Samozřejmě, pro mě, jako uživatele Windows s nainstalovaným frameworkem to
není žádný problém, ale někteří mí přátelé s Linuxem by třeba mou
aplikaci nemohli spustit.
Pokud ještě mohu mít dotaz - jak je to s COM komponentami?
Co vím, tak VCL komponenty se do programu v Object Pascalu zakompilují a
program samotný je poté obsahuje. COM komponenty jsou také zakompilovány,
nebo odněkud externě načítány?
Děkuji.
Neaktivní uživatel:26.9.2017 19:57
Mimochodem, ohledně té multiplatformity VB.NET mě napadlo, že by jí šlo dosáhnout přes ASP.NET, jen by tedy výsledná aplikace neběžela nativně, ale v prohlížeči.
Marian Benčat:26.9.2017 20:15
.NET Core není nijak omezený na prohlížeč.. ostatně.. je to runtime.. ostatně.. ten kestrel server, je konzolová aplikace. Není tedy problém nad tím runtime napsat nějaký UI framework. (i když to imho nikdy nikdo neudělá)
David Klouček:26.9.2017 20:53
Když se pohybuješ v .NET světě. Nevíš, proč se MS nechystá udělat UWP multiplatformní? Podle mě by to ukončilo věčný dilema .NET vs Java.
Neaktivní uživatel:26.9.2017 20:56
Takže pokud bych místo projektu v .NET Frameworku udělal projekt v .NET Core, tak bych mohl tvořit multiplatformní konzolové aplikace, rozumím-li tomu správně. A pokud bych do toho zakomponoval třeba Libui, tak by měly jít tvořit i grafické aplikace, nebo ne?
Marian Benčat:26.9.2017 22:52
Java svuj multiplatformní boj dávno prohrála.. .NET ji rozdrtil jak na mobilech, tak v herním průmyslu a drtí ji už i na serverech.. jediné co tedy zůstává javě dlužem jsou desktop aplikace.. a popravdě o tom se nechci bavit.. o těch 10ti aplikacích, co jsou v javě a někdo je na linuxu reálně používá.
Jinak.. osobne bych se mozna v krajnich situacich nebal treba ElectronEdge. coz je ve sve podstate custom browser s tim, ze logiku muzes ridit C# z .net core console appky..
https://github.com/…lectron-edge
chce to ale kus dřeva mezi zuby, az se budes dotykat javascriptu..
Marian Benčat:26.9.2017 23:00
https://github.com/noliar/DevZH.UI takze urcite to jde. jde jen o to,kolik tomu chces venovat prace..
Jirka Jr:28.9.2017 16:46
com komponenty běží v odděleném procesu a vaše aplikace s nimi komunikuje nějakým meziprocesovým komunikačním mechanismem skrytým za com/dcom api
procesy, ve kterých ty com komponenty běží, jsou spouštěny windowsí službou (v českých windows 10 je to "Spouštěč procesů serveru DCOM"), která podle požadavku od aplikace na danou komponentu spustí ten správný proces s tou správnou dll knihovnou
ve visual studiu ve vb.net projektu staci v referencích přidat referenci na
com type library
a pak už jen použít přidaný namespace a v něm obsažené třídy
delphi/lazarus na to mají své nástroje, ale nemám o jejich používání
ani páru
jen vím , že lazarus má k dispozici "tohle ":http://wiki.lazarus.freepascal.org/LazActiveX
Jirka Jr:28.9.2017 16:54
SharpDevelop jsem párkrát zkoušel a v pohodě jsem v tom něco napsal a spustil
dokonce se mi v tom podařil otevřít zdroják KeePassu, sestavit a spustit
ale co se pamatuju, tak u 64-bitových aplikací mi to hlásilo, že je
neumí ladit
nevím, jak na tom jsou teď ... zkoušel jsem tak cca 2,3 roky zpátky
jinak občas tam něco zahapruje nebo oproti Visual Studiu chybí, jak už to u hodně komunitních bezplatných projektů bývá
Jirka Jr:28.9.2017 17:13
s multiplatformními aplikacemi s grafickým rozhraním je vždycky nějaký ten porod
osobně, kdybych chtěl mít co nejmíň starostí, tak bych zvolil prostředí NetBeans/Eclipse a Javu nebo pro ObjectPascal ten Lazarus
jinak jsou spousty dalších možností, ale už je s tím víc starostí
neznám dotGNU, ale Mono mě stabilitou a kompletností knihoven nenadchlo
je fakt, že nutnost upgradovat nebo odinstalovat .NET na starší windows
bývá opruz, ale většina lidí je už dneska připojená na net, takže se
dá v mžiku doinstalovat
další možnost je přibalit příslušný dot net do instalačního balíčku
a nebo instalátor nasměrovat, aby automaticky stáhl a spustil instalaci
patřičné verze .NETu
ale tento problém budete mít s každým nekompilovaným jazykem, že musíte doinstalovat běhové prostředí a nebo ho alespoň přibalit do instalačního balíčku, pokud to jde
bez běhového prostředí pak ten lazarus/delphi
a pokud jste už někdy zkoušel vyvíjet jen s textovým editorem a vše si spouštět ručně, nebo si na to psát skripty, tak pak se vám otevírají poněkud širší možnosti ...
to pak záleží, jestli už jste se otrkal na nějakém IDE a máte chuť se pustit do větší džungle
Tak nyní už mám ve všem jasno. Všem mnohokrát děkuji za poskytnutí
kýžených informací.
A jelikož zdaleka nejvíce mi pomohl Jirka Jr, který mi vlastně
zodpověděl mou otázku, udělím mu akceptované řešení.
Ještě jednou díky a mějte se.
Mimochodem, vybral jsem si Visual Basic .NET
Neaktivní uživatel:29.9.2017 20:52
Ještě k tomu SharpDevelopu - poslední verzi poměrně dost ořezali.
V předchozí verzi s číslem 4.4 bylo možné dělat programy v Boo, Pythonu a
Ruby - jak konzolové, tak grafické.
V nové verzi podpora těchto jazyků zmizela kompletně a u VB.NET zmizela
možnost dělat grafické aplikace.
Pro mé aktuální účely by mi stačila ořezaná verze, ale přeci jen,
jednou se budu chtít posunout někam dál.
Jirka Jr:29.9.2017 21:53
tož také děkuji, gratuluji k rozhodnutí a přeju hodně úspěchů
Zobrazeno 25 zpráv z 25.