Hej! Jag arbetar flitigt i VB6 men nu börjar det kännas dags att ta sig ur träsket och lära sig lite modernare saker. 1) Överväg väldigt seriöst om du inte ska titta på C# istället om det inte är så att du har väldigt, väldigt bra diciplin, annars har vb.net-kod en förmåga att helt enkelt inte se bra ut ;) Eftersom Oskar är så säker på sin sak så hävdar jag lika skarpt att C# har en förmåga att se ännu mer skräpigare ut. VB.NET For the win ! > Eftersom Oskar är så säker på sin sak så hävdar jag lika skarpt att C# har en förmåga att se ännu mer skräpigare ut. VB.NET For the win ! Okej så det är lättare att göra fel i .NET ? Nej Nej Nej Vb.net krångligt dumt djä... skit. Okej, ni verkar ganska enade. Men det tar verkligen mot å lära sig ett helt nytt, jag är ju som sagt väl inlärd i VB. Mitt förslag om du vill ha en stegvis övergång. Andreas, En annan brist i .Net-stränghanteringen är Remove, som smäller om man t ex skriver Om inte jag misstar mig så innebär Nothing att variabeln inte blivit initierad. "oinitierad" är inte samma sak som att man inte har för avsikt att använda en variabel. <b>Jag brukar t o m ta bort referensen till Microsoft.VisualBasic.Compatibility.dll så tvingas man skriva "ramverkskompatibel" kod</b> Skulle tro att det är lätt att ändra default, finns väl någon projektmall som skräpar någonstans, antingen i mina dokument, eller i vs.net-mappen. C# är väll ingen riktig c? Jag har svårt att se motståndet mot {}-syntaxen, men har man väl blivit lisp-frälst, så är även det hårt att sitta och titta på. Jo att gå in och diskutera programmeringsspråk är alltid samma visa. <b>>Enligt vad jag själv anser kan man inte generelt säga att ett språk är kraftfullt, utan det är kraftfullt för vissa saker. </b> Niklas! Niklas! Roland och Per-Olof: <b>Gratis lazy programmering, tillståndslös programmering, och hela det köret är skäl nog för att få någon som är fast i C++, .NET eller Java att gå vidare till Haskell.</b> Avstår från att komma med några personagrepp men har full förståelse att man aldrig blir fullärd inom datorvärlden, båda gammal som ung. <b>>Om vi skulle försöka oss på att ge frågeställaren lite svar.</b> Till en början vill jag tacka för alla svar. <b>Men om vi håller oss inom ramen VB, är VB6 eller VB.NET att föredra för mig?</b> Japp gillar OO skarpt. Återkom gärna när du provat och kommit underfund på vilket skit det är VB.net. Hehe kan mycket väl hända :) >Att gå till C#, VB.NET och Java är ju lite mjukare. Inga "farliga" konstruktioner som pekareVisual Basic 6 -VS- Visual Basic .NET
Vad är det för huvudsakliga nack- och fördelar mellan dessa?
Vad är skillnaderna i språket?
Finns det någon riktigt bra sida för nybörjare som ni kan rekommendera?
Vad är troligtsvis det första hinder jag kommer stöta på?
Tack på förhand :)Sv: Visual Basic 6 -VS- Visual Basic .NET
Sv:Visual Basic 6 -VS- Visual Basic .NET
Sv: Visual Basic 6 -VS- Visual Basic .NET
Du tror inte att du ska fundera lite nu... VB.net lånar en massa syntax ifrån vb 6, och vb 6 är inte fint, och hade en del konstiga begränsningar. Om du sedan har dålig diciplin och börjar skriva vb.net, hur stor är inte risken att börjar med en massa ovanor då? Om du istället kör på c# så är det svårare att skaffa sig de ovanorna eftersom du då _måste_ lära dig ett annat sätt än gamla vb-stuket. Att sedan köra vb.net är inte särskilt svårt..Sv: Visual Basic 6 -VS- Visual Basic .NET
Jag kör för övrigt ganska hård diciplin, blir svårt annars med stora projekt. Gått några grundkurser i C#, men inget windowsprogrammering. Så det vore ett stort kliv, till skillnad från VB.Net som jag kan tänka mig har många likheter.
Trivs bra med VB, förutom att det ofta blir svårt att hålla en god struktur.Sv:Visual Basic 6 -VS- Visual Basic .NET
Bli kvar vid VB 6 det håller många år till.
Själv är jag väldigt förtjust i Delphi mycket bra alternativ. C++ är det bästa.
Om du skall lära om så är det lika lätt att välja C++ framför Vb.net .
Tro mig du kommer att bli djä... frustrerad om du väljer VB.netSv: Visual Basic 6 -VS- Visual Basic .NET
Om man nu skulle gå över till C++, är MS Visual C++ att föredra?Sv: Visual Basic 6 -VS- Visual Basic .NET
Börja med VB.NET för mycket av tiden kommer du lägga på att bekanta dig med alla nya sätt att göra det på. Att bekanta dig med objekten är en investering du har nytta av om du går över till C# senare.
När du skriver kod i VB.NET försök att finna .NET sättet att skriva det.
T.ex.
"Hello world".left(3)
istället för
Left("Hello world")
Det är nämligen samma sätt du skriver på om du går över till C#.
Jag har ett hat/kärleksförhållande till C++. C++ var bland det första objektorienterade språken, man försökte stoppa in OO i ett befintligt språk. Så som VB 6 och VB.NET härstamar från basic, vilket är funktionel, har blivit mer och mer objekt orienterade.
Java och C# känns mer mognare på så sätt då de föddes objektorienterade.
En vän till mig har blivit förtjust i Objective Caml. MEn jag har själv inte haft tid att testa det.
http://caml.inria.fr/
Sv:Visual Basic 6 -VS- Visual Basic .NET
Jo visst blir det "renare dotnet" så, men spelar det någon roll? Hur ofta portar du VB system till C#?
Eftersom Nothing.Left(3) resulterar i Null Reference Exception föredrar jag Left(Nothing,3).
Alternativet hade ju varit
If Not x Is Nothing Then
return x.Left(3)
End If
Vilket knappast är snyggare kod. Bättre är det kanske om du får betalt per kodrad. Annars ser jag ingen fördel! Rimligen om du är C# kodare så gör du en egen util-function som gör samma sak. (Andreas.MyCoolVbLookAlikeUtils.Left!) Är detta då "mer standardiserad" programmering än att använda funktioner i namespaces som följer med i ramverket och som alla VB-programmerare i världen kan? Kanske inte?
Fokusera på problemen ni ska lösa i stället :DSv: Visual Basic 6 -VS- Visual Basic .NET
<code>
value=value.Remove(10)
</code>
när strängen "value" har färre än 10 tecken (Index out of bounds, typ). Väldigt irriterande, varför inte bara returnera strängen som den är i stället? Korrekt på sitt sätt iofs, men inte användarvänligt.
I övrigt så skulle jag i likhet med andra här aldrig använda Left, Mid och andra avarter :-) Jag brukar t o m ta bort referensen till Microsoft.VisualBasic.Compatibility.dll så tvingas man skriva "ramverkskompatibel" kod (de få gånger jag jobbar i VB.Net). Jag gillar C# bättre, men vi programmerare lär inte enas om den saken år 2007 heller :-)Sv: Visual Basic 6 -VS- Visual Basic .NET
Varför skicka en oinitierad variabel till Left funktionen.
Jag finner VB.NET's OO orienterade approach mer lättläst än VB's funktions orienterade.
Man läser från vänster till höger.
Om du vill utföra två operationer. T.ex Trimma ett värde och kontrollera längden:
If MyVar.Trim().Length > 0 Then
End If
Läser ut: på variabel MyVar trimmar och kontrollerar om längden större än noll.
Jämfört med;
If Len(Trim(MyVar)) > 0 Then
End If
Längden på det trimmade värdet lagrat i variabel MyVar är större än noll.
Ur läsbarhetssynvinkel ser jag en fördel att först identifiera vilken variabel som man arbetar med.
Sv:Visual Basic 6 -VS- Visual Basic .NET
T.ex.. i ASP.NET
Request.Item("ID").Length > 0
Detta smäller om adressen inte innehåll någon ID-parameter...
Objektorienterat snyggt.. ehh.. jaha... visst... *inte imponerad*
Men är det kul..? Bra... ?
Och vår petiga OOP ... det skiter väl användaren i,
som i stället blir uppretad av SERVER ERROR - Null Reference Exception
och en STACK TRACE... Default... Ja jag vet att man kan felhantera.
Handlar inte om det.. : D
Och.... VisualBasic.Left() är väl visst OOP :)
(Public Shared Function Left !)
Varför är det egentlige mindre OOP än följande exempel?
<code>
Public Shared Overloads Sub FillDataset(...)
' member of Microsoft.ApplicationBlocks.Data.SqlHelper
</code>
Förklara det för mig... :)Sv:Visual Basic 6 -VS- Visual Basic .NET
Jag tog bort den referensen redan från början när jag gick över till VB.NET och jag kan inte säga att jag har märkt av nått av alla dom problem man fortsätter skriva VB6-kod istället för VB.NET-kod.
Det rekommenderas starkt!
Är det möjligt att välja vilka referenser som ska vara förbockade från början för nya projekt?
ThomasSv: Visual Basic 6 -VS- Visual Basic .NET
Sv:Visual Basic 6 -VS- Visual Basic .NET
Det är heller inte c++ utan snarare VB med en syntax så att det i stora srag ser ut som c.
.net innehåller en mängd dialekter av redan existerande språk och påminner på ytan om dessa men är bara ett skal över ett språk som bildar .net och alla förkompileras för att kunna bli maskinoberoende.
.net är objektorienterat enligt många men finns säkert en del som fnys år dett.
(finns massa fina namn på allt detta men avstod från att fördjupa mig i detta)
Själv använder jag messt asp.net och då med vb syntax då jag trivs med vb.
Blir det ersätning av VB6 så kommer det bli vb.net.
Har för länge sedan skrivet en del i c men förlíkar mig inte med "måsvinge-språket" (privat smaksak)
mvh RolandSv: Visual Basic 6 -VS- Visual Basic .NET
<b>>Det är heller inte c++ utan snarare VB med en syntax så att det i stora srag ser ut som c.</b>
Eh...?
C är i stort sett en delmängd av C++ (några detaljer i syntaxen som skiljer).
Personligen är jag ju anhängare av C++, Haskell och Lisp, men det dröjer väl ett tag innan folk hajar att det faktiskt är språken som är mest kraftfulla som man ska använda =).
Varför skulle de språken jag påstår vara mer kraftfulla verkligen vara det?
Om du har skalan 0-10 "kraftfullhet", och står på C#, säg, 6 på skalan. Då är det inga problem att titta "neråt". "VB6 är ju uselt; har ju inte X". "Assembler är kass; saknar både X och Y". X och Y kan vara olika typer av språkkonstruktioner eller möjligheter i språket.
Men uppåt har man svårt att se poängen. "Varför skulle jag vilja ha Z i YaddiYaddi.NET? Oanvändbart!". Det har VB6- och assembleranvändare sagt i många år om så vansinniga idéer som OO, loopar och funktioner...
C++ har en del grejer många språk saknar. Av någon anledning verkar en del inte insett det. Men framför allt Haskell har konstruktioner som gör att du känner dig instängd i i stort sett alla andra språk. Och vi ska inte tala om Lisp. Varje ny språkkonstruktion de senaste 15 åren har varit ett steg närmare Lisp. Lisp har allt, och när man väl förstått det, så känner man sig otroligt begräsnad i alla andra språk.
Ruby är det massorna borde lära sig, inget annat. Halvvägs till Lisp!Sv:Visual Basic 6 -VS- Visual Basic .NET
Finns mångder som har synpunkter på vad som är bäst.
Fråga en Fransman vilket språk han föredrar att tala så är det säkert Franska.
C är bland de kraftfullare språken för vissa saker. Men själv föredrar jag helt andra språk för administrativa program. Skulle jag skriva ett operativsystem skulle c vara intressant. Skulle jag skriva mycket optimerad kod för en microkontroller skulle troligen det bli i assembler. osv.
Är optimering för microkontrollern att få fram mycket kod på kortare tid samt att enklare kunna förändra den skulle jag föredra c.
Enligt vad jag själv anser kan man inte generelt säga att ett språk är kraftfullt, utan det är kraftfullt för vissa saker.
VB6 är mycket kraftfullt för att skriva vissa saker med och troligen tycker fler det eftersom det är så många användare. Jag skulle inte använda det för att programera microkontrollers men mycket väl för databasdrivna applikationer typ adminstrativa system. exempelvis bokningsstem med SQL databas.
Till tidskritiska system är det inte bra men finns massor med tillfällen då det är kanon.
När det sedan gäller .net världen så enligt vad jag känner till så är c# och vb.net i stort sett bara olika syntaxer för att programmera och är starkt uppstyrt av ett regelverk. C# har här inget med styrkan som finns i c.
För de aplicationer som skall vara plattformsoberoende är nog .net bra men det finns fler språk för detta, t.ex. JAVA. Behöver man inte plattformsoberoende så anser jag att .net bara är ett onödigt påfund.
Jag har sett ett antal evolutioner inom datavärlden sedan jag började 1980. Men få revolutioner. En var när man slapp knacka c för att skapa en windows application och kunde skapa den med VB.
Min första windows programeringsbok var "Programming Windows" av Charles Petzold. drygt 700 sidor för att skriva enklare windowsprogram med c. (pust)
Jag var med när Bill Gates (1991) var i Stockholm och på ett seminarum om Windows programering även lanserade nya VB 1.0
Det är 16 år sedan nu och jag väntar på nästa revolution.
Givetvis finns det nu många som tycker annorlunda och det är fullt normalt då vi alla uppfattar världen via sina egna referensramar.
mvh RolandSv: Visual Basic 6 -VS- Visual Basic .NET
Då kan du inte tillräckligt kraftfulla språk. Kan man (och förstår) OO, så är språk som saknar möjligheten väldigt omständliga att arbeta i. Använder man loopar så är det väldigt omständligt att arbeta med goto.
Har man väl provat riktigt bra språk så är alla språk under dem väldigt krångliga att skriva snygg kod i.Sv:Visual Basic 6 -VS- Visual Basic .NET
Jag har jobbat ett antal år på Volvo Lastvagnar och utbildad i JSP (Jackson Structured Programming) bl.a på Volvo Datas utbildningar så jag anser mig nog ha tillräckligt kunskaper att fatta när och när man inte använder goto utan att få sådan skit tillbaka.
Skrev strukturerade och väldokumenterade system redan på mitten av 80 talet utan några goto. Men skriver man i assembler finns inget annat att tillgå.
Har programmerat allt från Stordatorer till microkontrollers, PLC och robotar utan att hitta det ultimata språket som klarar allt.
När du anger att man bör prova riktigt bra språk så undrar jag om det är C# eller vb.net du menar och varför något av dem skulle vara att föredra så även trådskaparen kunde få lite fakta.
mvh RolandSv: Visual Basic 6 -VS- Visual Basic .NET
Ditt resonemang om dessa saker avslöjar att du liksom många andra med din tidsmässigt begränsade erfarenhet ser detta endast ur synvinkeln applikations- och webprogrammering på PC-plattform.
Systemutveckling för PC numera är ju en trevlig historia där man har jämförelsevis otroliga prestanda och nästan obegränsat med minne och andra resurser.
Men världen är mycket större än så, även för progammerare/systemutvecklare.
I många miljöer måste man istället väga in hur effektiv kodgeneratorn och länkaren är p.g.a. begränsade hårdvaruresurser. Hur bra är optimeraren? Uppnår vi tillräckliga prestanda etc.etc.
När man utvecklar realtidsapplikationer med lite mer utpräglade krav på snabb responstid och inte så vass hårdvara (p.g.a. att den senaste generationens processorer ännu inte är certifierade för användning i den kritiska applikationen) är objektorienterade språk inte alltid möjliga att använda, då ofta (inte alltid, det går inte att generalisera här heller) alltför långsam kod genereras.
Jag har utvecklat i många av dessa olika miljöer sedan 1980 (började med 8080-processor i assembler, via 32-bitars embedded system redan 1987, började med PC 1988 för DOS i C osv.)
och jag håller fullständigt med Roland att den verkliga revolutionen var när VB kom. De flesta som försökt skriva applikationer för 16-bitars Windows i C eller C++ håller nog med.
Vad jag vill komma fram till är att det inte finns ett programspråk som är optimalt för alla typer av utvecklingsarbete resp. alla typer av utvecklare. Det finns ett stort inslag av smak i detta också, annars skulle det nog inte finnas så många olika språk.
Den som hävdar något annat kan antingen inte historien eller ser bara en begränsad del av vad alla de områden där programmering/utveckling förekommer. Det finns mycket mer än PC och Windows/Linux här i världen. Inte minst inom styrning/reglering/automation.
/PeOSv:Visual Basic 6 -VS- Visual Basic .NET
1. Ja, det finns vissa typer av maskiner där det
- inte finns stöd för en viss typ av språk, saknas kompilatorer
- har mycket stora krav på effektivitet
- eller helt enkelt har ett enskilt inbyggt språk som man inte kommer ifrån.
Alla punkterna kan åtgärdas via kompilatorer. Det är där ansvaret ligger för att få tillräckligt effektiva program. Finns det inte tillräckligt bra sådana så är det där man bör satsa. I princip, vill säga.
Sen är det visserligen sant att många mikrokontroller och PLC-jox faktiskt oftast har så pass enkla sysslor att det inte behövs något kraftfullt språk.
2. Men det är oavsett inte det jag syftar på. Jag syftar mycket riktigt på programvaruutveckling i persondatormiljöer, eller rättare sagt en slags generaliserad utvecklingsmetodik. Jag har ett visst lingvistiskt intresse, och då är det så att jag förutsätter obegränsade resurser förutom tid, och obegränsat bra kompilatorer. Vad jag fokuserar på är (precis som väldigt många andra) hur man kan få ner den totala utvecklingstiden (inkl. maintanence).
Om jag omformulerar hela min statement utifrån den här kommentaren:
<b>>Skrev strukturerade och väldokumenterade system redan på mitten av 80 talet utan några goto. Men skriver man i assembler finns inget annat att tillgå.</b>
Exakt. Det finns inget annat att tillgå. Och om man då har arbetat i en miljö där man inte behöver goto, så känner man sig instängd i assembler. Det blir svårare att arbeta, man blir frustrerad över att man behöver skriva så mycket mer kod för samma arbete.
Precis samma steg finns det från icke-OO till OO. Har man arbetat med klasser under lång tid, låt säga använder sig av konstruktorer och destruktorer för att öppna och stänga databasanslutningar, så skriver man kod i stil med:
void funktion()
{
DB database("...");
database.executeQuery("");
}
Att göra samma sak utan OO blir
void funktion()
{
sqlOpenDatabase("...");
sqlexecuteQuery("");
sqlCloseDatabase();
}
Plötsligt behöver man hålla reda på mer grejer, utvecklingstiden ökar, etc. Saknas möjligheten så blir man instängd.
Samma sak händer i steget till templates (eller "generics" som de väl kallas i Java och .NET); när man väl förstått hur man ska använda det rätt kan man inte förstå att man kunde arbeta utan det. Detta enskilda skäl är i mitt tycke nog för trådskaparen att kolla på C++, .NET eller Java.
Sen tillkommer ju naturligtvis en "riktig" OO (framför allt riktigt arv till skillnad från leksaksvarianten i VB6).
Problemet är att många av någon anledning tror att det tar slut där - "C# har allt" - vilket det inte gör. Gratis lazy programmering, tillståndslös programmering, och hela det köret är skäl nog för att få någon som är fast i C++, .NET eller Java att gå vidare till Haskell. En riktig makromiljö som finns i Lisp finns (mig veterligen) inte motsvarighet till i något annat språk.
Man kan bara titta neråt på kraftfullhetsskalan.
För övrigt tycker jag att det är intressant att 40+ alltid drar upp åldersskillnaden som ett slags argument för att jag har fel i diskussioner.Sv: Visual Basic 6 -VS- Visual Basic .NET
För att sedan upptäcka monader och plötsligt åter hamna i imperativ programmering... :-DSv:Visual Basic 6 -VS- Visual Basic .NET
Om vi skulle försöka oss på att ge frågeställaren lite svar.
Min rekomendation är att om du vill växla till något nyare språk än VB6 så kan du gott välja vb.net
En av nackdelarana du kommer märka direkt är att allt måste kompileras före det körs. Däremot så är verktygslådan större och det ska enligt källor vara en riktig oo miljö.
Är du ingen stor programmerare så räcker det med VS2005 Standard
Där har du både vb.net och c# och kan utveckla asp.net samt en hel del annat.
Köp dig gärna en bra bok så går det enklare att förstå allt nytt. Man måste förstå tänket i .net för att hänga med. Allt ska dessutom vara objektorienterat så har du inte hållit på med det förut så är det dags att lära sig. En ny värld öppnar sig finns massor intressant men också massor av fällor.
Nu hoppas jag fler hjälper till med praktiska råd inför ditt val.
mvh RolandSv: Visual Basic 6 -VS- Visual Basic .NET
Det är ju just det jag försöker göra. Att byta från ett språk till ett kraftfullare är alltid bra, man omvärderar sin syn på hur man bör skriva kod. Spelar ingen större roll vilket språk.
Mitt personliga förslag är C++, det är i mitt tycke ett av de renaste och snyggaste språken, och har funktionspekare, "fullständig OO", operatoröverlagring, och templating, vilket gör det extremt kraftfullt.
Men sen är det relevant vad man faktiskt använder sin programmering till. Är det fråga om "hobbyprogrammering" så skulle jag tipsa om att försöka sig på något funktionellt språk (t.ex. Haskell som jag nämnt tidigare). Mycket jobb att lära sig, men det är värt det.
Att gå till C#, VB.NET och Java är ju lite mjukare. Inga "farliga" konstruktioner som pekare, och ändå ganska snarlikt det man tidigare gjort. Om man snabbt vill lära sig "det nya", och det som "gäller" enligt bland annat MS så tycker jag att endera sådant val är vettigt. VB.NET är ju i mitt tycke en av de värsta bastarderna som finns, men vill man verkligen inte använda {}-syntax kanske det är vettigt.Sv:Visual Basic 6 -VS- Visual Basic .NET
Det verkar som att ni är enade om att olika språk är att föredra i olika situationer, vilket jag håller med om. Jag utvecklar framför allt program för Windows som inte har behovet att vara plattformsoberoende.
Applikationerna behöver inte vara realtidskritiska.
Jag har även arbetat i bland annat; assembler, C, C++, Java, pascal.
Jag har inget emot "farliga saker som pekare" :)
Vad gäller vilken typ av programmerare jag är:
Jag har alltid haft ett brinnande intresse av programmering och började arbeta i QuickBasic vid 9 års ålder. Just nu studerar jag datavetenskap vid högskola och kommer ha 250hp när jag är klar. Det jag gör kan anses vara "hobbyprogrammering", men jag strävar alltid efter att bli bättre och detta är vad jag kommer arbeta med efter studierna.
Vilket språk är störst inom företag?
Ni är er trogna era språk, så om jag frågar vilket som passar mig bäst så får jag troligen ytterligare fem förslag. Men om vi håller oss inom ramen VB, är VB6 eller VB.NET att föredra för mig?Sv: Visual Basic 6 -VS- Visual Basic .NET
På den konkreta frågan är det MYCKET enkelt att svara. VB.NET utan någon som helst tvekan.
VB6 har trots vad många hävdar tjänat ganska väl men bristerna är stora och vill du jobba OO så är ju VB6 ett skämt.
/PeOSv:Visual Basic 6 -VS- Visual Basic .NET
Har du någon sida/tutorial på nätet som du kan rekommendera? Sv: Visual Basic 6 -VS- Visual Basic .NET
C# eller C++ gäller om du skall bli harmonisk.Sv:Visual Basic 6 -VS- Visual Basic .NET
Menar du att vb.net är mer skit än vb6 då?Sv:Visual Basic 6 -VS- Visual Basic .NET
När jag gick från C++ till C#/VB.Net (använder båda lite omväxlande tillsammans med C++/CLI) tyckte jag just "återgången" till pekare var det jobbigaste. I C++ använder man ju nästan aldrig pekare och new direkt eftersom det finns referenser, stackobjekt, temporaries och STL.
I C# och VB.Net är det ju pekare (eller referensobjekt som de visst kallas) hela tiden. Kolla vilket .Net program som helst och se hur mycket "if (xxx == null)", "string.IsNullOrEmpty", "xxx ?? string.Empty" och "catch (NullReferenceException)" det finns.
Man vänjer sig dock snabbt. Det som irriterar mig mest nuförtiden är all tankemöda man måste lägga ner på resurshantering (t.ex. filer och database connections) i .net jämfört med i C++.