|
As a general rule, people showing the kind of hashness as you do, toward one tool (or standard, or whatever) tend to have a poor understanding of how to use it. Or they consider it out of its intended scope of usage.
A number of years ago, I switched jobs, from a Solaris environment to a non-*nix-environment: I really never made friends with Solaris. Nor with the company standard editor emacs. I made both crash quite regularly. More than once, I demonstrated to my colleauges what I had been doing. They looked over my shoulder, and screamed out: Hey, you mustn't do THAT! What the h** did you do that for? Well, I did it to show you how I made Solaris crash (or emacs)... This happened several times, and every time they made me the cruel sinner who didn't know to behave, and ruined their concept of Solaris as the worlds most rock solid OS. Well, it was - as long as you didn't do anything that could make it crash...
In my new job, they were running a different OS (this was before Windows became the only alternative; it was in mincomputer/supermini area), which crashed several times a day. The Unix educated sysops did everything to make Sintran III appear as if it were Unix. I happened to know Sintran III well, so, as a left hand job, I became sort of sysops supervisor, telling them the proper way to maintain a Sintran III machine. I spent a week or two cleaning up the procedures. Three months later, some people were still complaining about the frequent crashes, and I had to drag them over to show them the system logs: The system hadn't had a single stop for three months.
Systems, languages, methods ... may be severely misused, abused, used in inappropriate ways or for inappropriate purposes. That doesn't mean the poor abused thing is evil, despisable or even bad. What you could say is that "X is not suitable for application Y, because it lacks a suitable way of doing A, B and C" (maybe it does have a provision, but for reasons 1, 2 and 3, that provision does not fulfill our requirements).
Any system, language or method that is widely used, is well suited for a certain class of tasks. Otherwise it wouldn't have been widely used. There may be other tools that would also be satisfactory. If you went into those environments using the tool you hate, presenting your arguments, you might learn that you hate reasons are not valid there.
E.g. lots of software people argue for open source, but lots of tool users would never ever consider looking at the source code of the tool. Or cost: You may save a thousand dollars on not paying for Visual Studio but sticking to emacs: How many man days saved does it take to pay for the software? Will the software save that many man days? (For VS, it has paid its price many times, compared to emacs, in my case.) Adaptation to established procedures: I have rejected a good handful of tools because the UI did not communicate in established professional terms and/or didn't support established work procedures or standards. The software developers just made their best guess.
To illustrate this with an experience of my own: In the old days when we had needle matrix printers with an ink ribbon, I was teaching a week long course, introducing computers to office workers who had never seen any more advanced tool than an IBM Selectric before. I taught them on screen editing, automatic text justifation, chapter numbering and TOC generating - all the things that we, as developers, were proud of. The last hour was reserved for reactions and comments to the course. The first thing that came up, and the only thing that all the participants agreed about, was the color of the printer ribbon! The black was almost bluish - cold, unfriendly. Would it be possible to get a more brownish ribbon, to give their correspondance a warmer, more friendly impression?
That was an essential point for the acceptance of our office automation system! Lots of systems succeeds because they e.g. provide (high quality) translations of the UI. That they use the right terms. That the end users understand what's going on.
I never used VB, so I can't tell why it has been so successful. I guess many of the reasons are non-technical. Then again I could say the same about other system that is used within the software business, such as the Internet protocols: They certainly didn't succeed becase they were the best designs, but 99% for non-technical reasons. Then entire "C class" of languages: The same. You won't be able to point out technical merits that can explain why the "C class" came to dominate the programming world. Then it is not fair to condemn VB purely on its technical merits (or lack thereof).
|
|
|
|
|
Member 7989122 wrote: As a general rule, people showing the kind of hashness as you do, toward one tool (or standard, or whatever) tend to have a poor understanding of how to use it. Or they consider it out of its intended scope of usage.
Or like me, they simply want to trigger the commie hippies that love it.
Member 7989122 wrote: A number of years ago ... blah f*ckin blah ... That the end users understand what's going on.
(yawn)
Member 7989122 wrote: I never used VB,
Count your blessings. I've had to use VB, VBscript, VBA, and VB.net. I've been a programmer for almost 40 years, and I think that makes me qualified to identify crap when I see it. It's like the MS Access of computer languages.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
John Simmons / outlaw programmer wrote: It's like the MS Access of computer languages.
Or as I like to call it "MS Abscess"...
Sincerely,
-Mark
mamiller@rhsnet.org
|
|
|
|
|
Just because you can use a shovel for pounding nails and "everyone" else is doing it too, doesn't mean it's a good thing.
#SupportHeForShe
Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson
You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
|
|
|
|
|
Why shouldn't we?
All programming languages have their good and bad.
However, there's one thing certain. VB sucks big time.
The whole language is way too wordy.
It ruins my display with too many characters.
"If" must be closed by "End if"
"For" must be closed by "End For"
"While" must be closed by "End While"
How many characters are there in the last one? 9! 9 characters in order to close a code block!
I used VB as a beginner. I moved to C# when I got better. Nowadays I use C#, Java, PHP, Javascript (Jquery). I have never thought of going back to VB. It's like an embarrassing past I wan't to bury forever. Using {} is so much much better.
|
|
|
|
|
... except when you accidentally close the wrong block, and spends hours to find out why it is not working.
|
|
|
|
|
I have never experienced that.
You should never too.
If you indent parent block and children block properly.
|
|
|
|
|
I'm curious to know why you feel that way about VB.NET, which can express virtually everything that C# can; and like other .NET languages can make use of (almost all of) the types in the .NET Framework.
There are obviously various small differences (VB.NET allows inferring the delegate type, allows assigning a numeric string to a number, etc.) Generally, I have found only one reason to prefer C# over VB.NET -- VB.NET's syntax uses English words where C# would use symbols.
|
|
|
|
|
ZevSpitz wrote: I'm curious to know why you feel that way about VB.NET
Because the name starts with "VB".
ZevSpitz wrote: which can express virtually everything that C# can; and like other .NET languages can make use of (almost all of) the types in the .NET Framework.
The words "virtually" and "almost" should be indicators for you...
ZevSpitz wrote: There are obviously various small differences (VB.NET allows inferring the delegate type, allows assigning a numeric string to a number, etc.)
"Inferring" and being typeless do not make VB a better idea. Unless you're a commie... or liberal...
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Some facts:
1. I am not a liberal or commie - in fact I think Atilla the Hun and Genghis Kahn were lily-livered pinko-liberal pooftahs.
2. I have written lots and lots of VB.NET - and got paid for it.
3, I have a 50 foot yacht in the marina. Sadly, the marine police have removed my small armoury therefrom until such time as I leave.
Your move!
|
|
|
|
|
Another VB fact:
I am retired on a tropical island in the Caribbean after 25 years of VB /VB.Net programming
Who's next?
|
|
|
|
|
I'm not retired because I'm busy replacing VB-based crap-ware with C#.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
So I got the money using VB and you got the crap and problems using C#.
Who did better?
|
|
|
|
|
I still do some projects - just for fun.
So If you want, I can enlighten your burden and take the project from you.
That is - if it pays enough of course.
|
|
|
|
|
A fact you missed:
0) Real programmers know enumerated lists start with 0.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
And 3 facts you missed:
0. Real programmers don't care what language they use; because they are able to solve the problem in any language.
1. Smart programmers solve the problem in the way it is the least work and pays the most.
2. Really good programmers won't be used on projects where they have to fix the crap of someone else (that's where juniors are for).
|
|
|
|
|
Reminds me of a 16 bit mini I knew in the 1980s: Fortran arrays are 1 based. This machine had a 48 bit float format, three 16-bit words. The CPU had a special instruction for calculating the memory address of an element in a float array: MIX3 would add one to the accumulator and multiply it by 3. The instruction had no other use than for Fortran float array address calculations.
|
|
|
|
|
John Simmons / outlaw programmer wrote: Because the name starts with "VB".
Because you don't like the name? It seems to me your dislike is far to strong to be justified by this.
John Simmons / outlaw programmer wrote: The words "virtually" and "almost" should be indicators for you...
I was referring specifically to pattern matching and types that make use of Span<T> , which are both relatively new features in C# and .NET in general. Unsafe code is also something that C# has which VB.NET doesn't.
IMO, pattern matching is as much a game-changer as LINQ, in writing expressive code, and it is quite unfortunate that it is not yet in VB.NET.
But I think the others are relatively edge cases. Your average business developer, targeting a Web stack or desktop application, doesn't need the higher performance of Span<T> , or unsafe programming -- not in C# and not in VB.NET.
Are you aware of other differences in day-to-day usage? Please feel free to correct me.
John Simmons / outlaw programmer wrote: "Inferring" and being typeless do not make VB a better idea.
I think that inferring the type in general is a good idea (using `var` in C# or `auto` in C++), because the code becomes more declarative -- focused on the intent of the code, and less focused on the mechanism the code will use. It's true that when every byte matters, it may be important to specify the type as byte , but again, I think these are relatively edge cases.
But I didn't say I think these are good things; only that these are things that work in VB.NET and will not work when transferring this knowledge over to C#.
(In fact, inferring delegate types from lambda expressions might involve a serious performance hit. If I have a database with a million records, and I use an ORM to extract the records which match a certain condition:
Dim qry As IQueryable(Of Person)
Dim filter = Function(x As Person) x.LastName.StartsWith("A")
Dim results = qry.Where(filter)
this code will use the Enumerable.Where extension method (which takes a delegate instance and not an expression), retrieve all the records in the database, and filter them in memory in the application code, all without any error. C# will not allow this, and force you to explicitly type filter as Expression<Func<Person, bool>> .
The automatic conversion that VB.NET does from a numeric string to an integer is also a bad idea, because the conversion might sometimes work in odd ways, and can be exceedingly hard to debug.)
John Simmons / outlaw programmer wrote: typeless
Note that VB.NET is not typeless, it just treats the type Object like C#'s dynamic .
modified 12-Nov-18 11:31am.
|
|
|
|
|
ZevSpitz wrote: I'm curious to know why you feel that way about VB.NET
ZevSpitz wrote: VB.NET allows ... assigning a numeric string to a number
I think you've just answered your own question there!
(Option Strict and Option Explicit should always be On . IMO, there shouldn't even be an option to turn them off.)
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Yes, they should always be on.
But C# still has the GoTo statement.
But that doesn't mean you have to use it
|
|
|
|
|
I even make use of it! In switch statements where two or more alternatives have the same (final) handling, it can be really useful, and far safer than the silent fallthrough of classical C (which is not allowed in C#).
It lacks a builtin ComeFrom, though; I had to implement that myself. It really is a must when you do more than the elementary exception handling.If you leave the stack dump to the standard library exception handling, you won't be able to pick up the output and process it in a reasonable way.
Of course you can't make a ComeFrom without support from the runtime libary. Given the StackTrace / StackFrame classes, it is trivial.
|
|
|
|
|
And so you see - everything has it use
|
|
|
|
|
Richard Deeming wrote: IMO, there shouldn't even be an option to turn them off.)
All of this is presuming that VB should be allowed to exist in the first place.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Then stop financing its makers - oh wait, they build C# too ....
Oh wait again - its even the same compiler and toolset ....
|
|
|
|
|
I did stop funding them. The last thing I bought from Microsoft was a MSDN subscription a number of years ago. That got me Windows 7 and VS2013. Recently, I migrated almost completely away from Microsoft at home. I still have a VM running Win7 so I can write Windows code with VS2017 community), but that's it.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|