-
Re: VBForums' new heavy .Net hand
Gosh, everyone is taking all of this so personally!
The "problems" with Delphi are:
- Uncertain future: the product continues to be dependent on companies who pass it around like a stepchild.
- Tiny and shrinking job market, almost entirely maintenance work.
- Vanishingly small community, booklists, available training,etc.
- Foreign component architecture (VCL) with no OS-level support.
- Module decoration in full view in the IDE and manually written unlike classic VB.
- Based on a language (Pascal) that the world has chosen to leave behind for good or for bad.
- Clunky IDE and poorly organized online Help.
- Community with a huge chip on its shoulder.
This is easily compared with classic VB's problems too:
- No future at all, a dead product.
- Shrinking job market largely limited to maintenance work.
- Stale from having been frozen in time at 1998.
- Time and Windows continue to march forward without classic VB.
- A waning community, lapsing into a QB-like morass of people doing games and graphics or web-scraping instead of solving interesting new problems.
I make those comments in light of the question asked a little bit ago here: "Which do you recommend to others?" I took that as "... recommend to beginners?" and perhaps I shouldn't have.
I you have a certain level of experience under your belt you know enough to make your own choices. If Delphi fits your needs I'd say great, more power to you. If VB6 is meeting your needs the same applies. But at that point you want to look at a number of options to be sure you're doing the right thing in a given instance. Sometimes C/C++ is needed. maybe not for the whole project, maybe just a library or two. Sometimes you can use Delphi in the very same place. I have.
Certainly the Delphi learning curve is much less than C++ for GUI and RAD applications. It can work well if you're writing monolithic desktop applications nobody else will have to support. If you move to Delphi.Net you can gain advantages from the Framework in terms of using .Net features like WCF. In VB6 you have to fall back on .Net Interop to do most of this right now (though maybe not in Win7;)).
But in terms of making a recommendation to a beginner there is no way I'd suggest Delphi, PowerBuilder, or classic VB. They are the past. Is that such an unreasonable opinion?
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by RobDog888
Oh so you do recommend .NET to people. :D I was just wondering if you had a big dislike for .net or ???
Oh I'll freely admit to a big dislike of .Net, much more than I dislike Delphi! :wave:
That doesn't mean I don't use both. It also doesn't do anything to change Microsoft's direction in tools and tool support.
I probably write more C# than VB.Net but that's usually not by choice. I won't claim to understand either one (or more importantly the Framework) in enough depth to make me feel comfortable providing .Net answers in forums though. Almost 98% of the C# I write is server side business objects that are related to CRUD work. It may as well be Cobol. Almost none of it is UI or communication related, and thus it tends to be pretty boring stuff - just data access and manipulation logic. The little bit left is mostly ASP.Net, and a tiny bit of Delphi maintenance.
The more interesting work is still mostly VB6. The primary uses I make of this are desktop client programs and Windows Services.
The former because (a.) most desktops still are on XP or Win2K and the .Net Framework continues to be a deployment headache in corporate settings and (b.) .Net programs still have terrible startup characteristics and unpredictable "lockups" due to garbage collection. Users scream when required to use .Net programs on the desktop because most are still on old, old machines (512MB PIIIs & Celerons are still common).
The .Net version of a customized Telnet client I replaced is just plain funny to watch. Disappearing cursor, lost keystrokes and response data, dropped connections. It's a hoot to try to use on a 256MB Celeron.
The latter (Services) because .Net Services also have terrible performance characteristics.
As time goes on 3rd party vendors of specialized service applications stop supporting mainframes, yet legacy applications there still require those functions. One example is address processing software. A customer moved to the vendor's Windows product which is written in a sandboxed Cobol and exposes an API as standard DLL calls. Another vendor came in and wrote a Service layer on top of that to provide mainframe applications with access over the network in an RPC-like fashion. The performance was... unacceptable.
Finally the vendor sunsetted the mainframe product and the customer was stuck. They had to abandon the mainframe software and use the Windows address processing software, but it was unable to hold up under load. Everyone blamed Windows of course (including both vendors).
I ripped out the VB.Net Service, replaced it with a VB6 Service, and we saw an immediate improvement in performance. Not only is the VB6 solution fully 12 times faster than VB.Net under sustained load, it never locks up for garbage collection. This is important because the request load is so high that a garbage collect hiccup results in queueing on the mainframe side and response times get worse and worse and worse... until finally they get better for a while. But those sporadic responses taking up to 180 seconds just were not acceptable, and batch processing against the VB.Net Service was abysmal due to even higher loading.
The funny part is that VB6 is far from the ideal tool for creating a Windows Service. That's an application type far outside of VB6's intended domain.
It's the same story at many a customer site.
So I CRUD away writing C# about 80% of my time, and when the need arises I spend time ripping out .Net "solutions" and putting in VB6 instead. The biggest problem is making sure customers understand the tradeoff, the status of VB6 - i.e. that it is "dead." I've offered C++ instead but of course since the development and support costs are 3 times that for VB6 nobody wants them anymore.
But .Net is here for the duration. There are lots of cases where the only well documented API exposed is .Net oriented. Just look at Microsoft's current Speech Server, BizTalk, and SharePoint platforms as examples.
With time Microsoft is improving GC, and careful Disposing makes a big difference. As more machines have a stable Framework version preinstalled and use it enough to keep it active startup woes will diminish along with deployment headaches. Better machines just plain do better in general. Some of this simply requires retiring old desktops and servers though.
-
Re: VBForums' new heavy .Net hand
I have to agree with you when you compare Delphi's "vanishingly small community" with the VB's one. Yes, unfortunately I couldn't find anything as good as Vbforums.com dedicated to Delphi and I really miss it. Anyway, there are some good communities that can give you a helping hand if you need it, even though they are few.
As far as the first problem you've mentioned is concerned (Uncertain future: the product continues to be dependent on companies who pass it around like a stepchild), I think that Embarcadero Technologies have not yet manifested any intention to stop investing in Delphi. If you have different information, please let me know.
The Delphi IDE may be clunky but it is very functional and offers you an enormous choice of native components, something that in VB6 is only possible to get by resorting to third-party OCX's.
If you are not a self-employed man (as I am) then it may make a lot of sense to embrace the .NET technology, but I can't see any reason why I should use .NET to develop native desktop applications.
Some time ago I pointed out that the main problem with .NET which prevents me from using it is that every two or three years MS come up with a new version of the Framework, which gets bigger and bigger. Distributing a 230MB runtime file is a serious problem here in Italy and this would result in fewer sales for me.
If a beginner wanted to produce desktop applications only, I would surely tell him that Delphi is a product to be taken into serious consideration (unlike .NET apps, Delphi's executables don't need any runtime or obfuscator).
-
Re: VBForums' new heavy .Net hand
You make some good points there. Obfuscation can be a big headache, and if your market is hostile you can find yourself investing heavily in trying to protect your programs from piracy and code theft.
The 2.0 Framework has been stable for a while and probably would be the best target, but it is not everywhere yet. However it will probably continue to be present in OSs beyond Vista and Win7 for a while.
So Delphi can address most of your concerns better than alternatives, which is great. Non-beginners can and should make informed choices based on their needs.
The best thing about MS SmallBasic is that before too long a beginner is forced to take a look at an alternative. It makes no attempt to be a tool for general use, or even all that useful in the first place. Training wheels are useful in themselves though too.
And it cuts down on VB6 questions like "How do I save a TextBox's content to disk?" ;)
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by dilettante
Certainly the Delphi learning curve is much less than C++ for GUI and RAD applications.
Not necessarily. The wxWidgets library makes GUI creation in C++ practically as easy as VB especially if you are using the wxWidgets IDE. It's seriously drag and drop. The same goes for QT and both can be easily taken to Linux, OS X, BSD, etc, recompiled and you're done.
Once C++0X is finished I think we'll be seeing some improvements to existing frameworks to increase the level of productivity of C++.
Quote:
Originally Posted by dilettante
Oh I'll freely admit to a big dislike of .Net, much more than I dislike Delphi! :wave:
I dislike .Net for a variety of reasons but I still think it's a great RAD framework. I hate Delphi. It's an extension hack on a language Apple developed and its syntax is nonsensical. At least C# is a standardized language; Delphi is not but I won't harp....
Quote:
Originally Posted by dilettante
The former because (a.) most desktops still are on XP or Win2K and the .Net Framework continues to be a deployment headache in corporate settings and (b.) .Net programs still have terrible startup characteristics and unpredictable "lockups" due to garbage collection. Users scream when required to use .Net programs on the desktop because most are still on old, old machines (512MB PIIIs & Celerons are still common).
You're doing something seriously wrong. The Garbage Collector does not cause lockups and .Net is a breeze in corporate environments (one of its main purposes).
First off, Garbage Collection sucks and is a terrible memory management idea. Unfortunately it's necessary as there are many back programmers out there who don't know how to clean up their mess. The Garbage Collector runs in the background and does not disturb your current application. In fact, it can't. It's running on a completely different thread and removes objects that are no longer references.
Also, 512MB of ram and Celerons are perfectly capable of running .Net applications. Remember, .Net is not a playground. You shouldn't just create tons of objects without cleaning them up the best as you can.
At the company I work for we have web servers that only have about 300-400MB of available RAM but we make due and have multiple ASP.Net websites and web services running without a hitch and being called multiple times an hour (sometimes a minute depending on the day!).
Just because .Net can "baby" programmers with the GC doesn't mean you shouldn't write decent code.
Quote:
Originally Posted by dilettante
The .Net version of a customized Telnet client I replaced is just plain funny to watch. Disappearing cursor, lost keystrokes and response data, dropped connections. It's a hoot to try to use on a 256MB Celeron.
Again, you're doing something very wrong. Are you handling everything in one thread? I've never had a .Net application handle like that and I've seen and worked on some insanely complex ones. 256MB is a little low but doable with a lean .Net application.
Quote:
Originally Posted by dilettante
The latter (Services) because .Net Services also have terrible performance characteristics.
Please explain. I've seen some well written services that were really fast and didn't have any problems so what are these terrible performance characteristics you speak of?
Quote:
Originally Posted by dilettante
I ripped out the VB.Net Service, replaced it with a VB6 Service, and we saw an immediate improvement in performance. Not only is the VB6 solution fully 12 times faster than VB.Net under sustained load, it never locks up for garbage collection. This is important because the request load is so high that a garbage collect hiccup results in queueing on the mainframe side and response times get worse and worse and worse... until finally they get better for a while. But those sporadic responses taking up to 180 seconds just were not acceptable, and batch processing against the VB.Net Service was abysmal due to even higher loading.
So you ripped out bad code and a bad architecture created by a third party, wrote it in a horrible and old language with little to not support for multi-threading and it was faster? You can't magically fix things that are poorly architected and poorly coded with layer on top of layer just by using another language.
You could write a service in C++ and I could write a service in interpreted JavaScript and have my service be 12 times faster than yours. Know how? Architect it well and if the C++ one is not then I can easily win.
It sounds to me like you're blaming .Net when it should really be the programmers taking the blame.
Quote:
Originally Posted by dilettante
I spend time ripping out .Net "solutions" and putting in VB6 instead.
I've always joked about doing this at work... didn't actually think someone did that :(.
Quote:
Originally Posted by dilettante
With time Microsoft is improving GC, and careful Disposing makes a big difference.
There was an update in 1.1 for the GC but, as far as I know, it hasn't been updated much if at all since then. What improvements are you referring to or did I miss something?
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by esposito
Some time ago I pointed out that the main problem with .NET which prevents me from using it is that every two or three years MS come up with a new version of the Framework, which gets bigger and bigger. Distributing a 230MB runtime file is a serious problem here in Italy and this would result in fewer sales for me.
I agree 100%; it's insane how large the distributions have become especially since Microsoft is using 2.0 as a base. I imagine 4.0 will be even larger :(.
Quote:
Originally Posted by esposito
If a beginner wanted to produce desktop applications only, I would surely tell him that Delphi is a product to be taken into serious consideration (unlike .NET apps, Delphi's executables don't need any runtime or obfuscator).
I'd say to look at wxWidgets and QT as well since they're very easy. They can even be used with languages other than C++ (maybe even Delphia if that's your cup of tea).
Quote:
Originally Posted by dilettante
Obfuscation can be a big headache, and if your market is hostile you can find yourself investing heavily in trying to protect your programs from piracy and code theft.
Obfuscation is a waste of time and money. When you go into developing an application you should know the limits of the technology you're using. If it's a desktop application to be sold then I don't see why anyone would choose .Net unless you don't care about the code's security.
I view Obfuscation as a way to try and force .Net applications to be something they're not.
-
Re: VBForums' new heavy .Net hand
As far as GC improvements go, a big problem in the 1.x CLR was handling GC for unmanaged objects. That got fixed in 2.0 and may well have been addressed in a 1.1 update. For the rest I just lean on the numerous Microsoft statements about 2.0, 3.5, and 4.0 that all tout "GC improvements" but don't provide details. The 2.0 applications I've seen all perform much better though.
The lockups I mentioned might be better described as temporary stalls? Things just stop working for a more than a merely perceptable time.
You're absolutely right that just changing tools can't correct lousy code. But when you're asked to do a job for a set fee it is hard to justify taking on the open ended task of trying to correct somebody else's problem child. As long as I'm given complete specs and the task is of finite size I can estimate better assuming tools I'm comfortable with.
If I thought I could do a better job myself in .Net then that might be an answer. I won't make that claim though.
wxWidgets sounds interesting and I'll have to give it a fair trial.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by Kasracer
When you go into developing an application you should know the limits of the technology you're using. If it's a desktop application to be sold then I don't see why anyone would choose .Net unless you don't care about the code's security.
That's all I have wanted to say ever since I started expressing my disappointment with .NET. Most commercial applications are developed in native code and, as you said, it is hard to find a valid reason why they should be written in .NET. Obviously, ASP.NET is a completely different story as it is probably one of the best languages on the market to develop Web based applications.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by esposito
Most commercial applications are developed in native code and, as you said, it is hard to find a valid reason why they should be written in .NET.
How about because its a hell of a lot easier and faster to write? To me that is the entire purpose of .NET - to make programming easier for people who dont want to spend years learning C++ or whatever.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by chris128
How about because its a hell of a lot easier and faster to write? To me that is the entire purpose of .NET - to make programming easier for people who dont want to spend years learning C++ or whatever.
I'm sure C++ is a lot harder to learn than .NET. I haven't found any particular difficulty learning Delphi, though.
-
Re: VBForums' new heavy .Net hand
Well I've never tried Delphi so cant comment but the reason I have never tried Delphi is because I would rather stick with a programming language Microsoft develop as I know there will always be plenty of support/tutorials etc for it for the foreseeable future.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by chris128
How about because its a hell of a lot easier and faster to write? To me that is the entire purpose of .NET - to make programming easier for people who dont want to spend years learning C++ or whatever.
What you described is why .Net is a RAD framework and not necessarily a good reason to develop commercial software in .Net.
Also, if you understand programming structure (even if you learned it in VB.Net), C++ isn't very difficult to learn and with GUI frameworks like wxWidgets and QT it makes getting an application off the ground pretty quick. Obviously it still wouldn't be built quite as fast as a GUI .Net application but it can be done relatively quickly.
I have no problem with commercial software being written in .Net as long as the company / person / organization fully understands the decision they're making. If they don't care about having their compiled code exposed or want to go open-source or a subscription based model then I think .Net can be a great fit. But if you don't want anyone getting your exact source code after reverse engineering your application or if you need the most possible speed, then .Net is not the way to go. I'm not saying it's impossible to reverse engineer a C++ application but once it's compiled into a native binary it's much more difficult to actually get any type of code that is even similar to what you wrote where as in .Net it's insanely easy. Even the "protectors" that encrypt your source in .Net can be broken as they have to be decrypted at some point. I'm also not saying that .Net can't be fast but for mission critical, speed hungry applications it's always better to have something like RAII and manual memory management (as long as it's done well, of course; memory learks are never good :)).
Off-Topic-A-Little-Bit
I learned C++ as my second language (I had taught myself VB6 about... 10 years ago I think? It wasn't too long after it came out I believe). Since I already had a basic understanding of programming structure from VB6 I was able to learn it relatively quickly. After that summer, however, I had to teach myself C# for my career and ever since then I had not written another piece of C++ code... until about a year ago. At my current job they had an urgent need to build a quick C++ GUI application and I was the only one who really had time to do it. I was very rusty with C++ but had a small GUI application up, running and functional by the end of that same day and all written using the Win32 API (didn't use any frameworks like MFC). C++ looks scary but I don't think it is; it has a ton of power an flexibility and it's not very difficult to understand what it's doing once you learn the syntax.
I think C++ has a stigma that it's very difficult to learn but really, once you know the basic syntax (which is larger than C's and C#'s (well, that's a tough call with LINQ)) then you just need to learn about the different libraries.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by chris128
Well I've never tried Delphi so cant comment but the reason I have never tried Delphi is because I would rather stick with a programming language Microsoft develop as I know there will always be plenty of support/tutorials etc for it for the foreseeable future.
When I started using VB (about 11 years ago), I was sure I had made the right choice as the name Microsoft was a synonym for guarantee to me. When MS decided to discontinue VB, I felt betrayed and I realized that I had taken for granted something that revealed itself to be unreliable.
MS are a private company and, as such, they put their own interests on top of their priority list.
The reason why they came up with .NET was simply because they were afraid of Java and wanted to produce something similar based on a virtual machine that, at least potentially, was compatible with different OS's.
MS didn't care about the millions of VB programmers who were unwilling to embrace .NET because they developed native applications for the general public and using an indecently huge framework would have meant shooting themselves in the foot.
Your comment, "I would rather stick with a programming language Microsoft develop", does not rest on solid foundations because, as soon as MS come up with another brilliant idea, they won't think twice before abandoning .NET and they will just kiss you goodbye. That's exactly what they did with legacy VB developers.
The moral of the story is, if .NET suits your needs, keep using it, but don't do it if the only reason is the reliability of MS. You are only a customer to them and, if your interests are in contrast with theirs, rest assured that you will have a hard time.
Personally, I develop shareware applications for the general Italian public and there is no logical reason on earth why I should decide to abandon Delphi and switch to .NET. Some people replied to me by saying that, in a few years, the .NET Framework will be present on most home PC's. The problem is, the FW is upgraded on a regular basis and, everytime a new version comes out, it grows so much that you wonder if you are installing a new operating system rather than a virtual machine.
As I have to take care of my own interests, the best thing I can do is forget .NET and see what the market can offer for the development of native software. At the moment, I consider Delphi as the best programming tool you can find on the market as a replacement for legacy VB. And please... don't call VB.NET Visual Basic because these two languages are completely different beasts.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by chris128
Well I've never tried Delphi so cant comment but the reason I have never tried Delphi is because I would rather stick with a programming language Microsoft develop as I know there will always be plenty of support/tutorials etc for it for the foreseeable future.
For the near future - most definitely but beyond that you can't really tell for sure.
Standardized and open-source languages and frameworks are, in my opinion, very future-secure because not only can others create tools and compilers for them but you can even do it. If something were to happen and every major company stopped supporting C or C++, you could still write a compiler for it and use it on other systems. So standardized and open-source languages / compilers are pretty safe.
Proprietary ones are not as they will only exist as long as they can help the company sell products.
Now don't get me wrong, I don't think Microsoft is going to abandon .Net anytime soon (or even in the next 10 years) but please don't always assume it's safe because Microsoft is such a large company. It only takes a few, major mistakes to take out a company and while I don't think that'll ever happen to Microsoft it's, unfortunately, always a possibility.
Thankfully the CLR and C# are both standardized so if something happened to the framework others can pick up the work but VB, I believe, is still owned completely by Microsoft.
Quote:
Originally Posted by esposito
MS are a private company and, as such, they put their own interests on top of their priority list.
100% right and one of the reasons why I stuck with PHP for so long before giving into ASP.Net's OO goodness.
While I can't see Microsoft abandoning .Net anytime soon, .Net 1.1 support is dimming and being replaced with a solid .Net 2.0 base. Everywhere I look I see things being upgraded to .Net 2.0 so 1.1 is already on the way out. Now I think 2.0 will be around for quite a long time but that doesn't change the fact that the .Net framework is still Microsoft's property and as such, can change at any moment.
Quote:
Originally Posted by esposito
And please... don't call VB.NET Visual Basic because these two languages are completely different beasts.
Why? Most of the syntax is the same and since Microsoft owns Visual Basic and calls both VB6 and VB.Net Visual Basic I don't see why you can't... yes they're quite different in many ways but syntactically it's not a huge difference.
-
Re: VBForums' new heavy .Net hand
So this is "rag on .NET" time? Sorry to interrupt the party.
But anyway, .NET is a very powerful framework, not just some RAD tool. Can I drag and drop database objects everywhere and make a functional app? You bet I can. But do I? Not since college 2 years ago. I understand that, in order to make myself a better developer, I can't rely on Visual Studio to do my work. I have to roll up my sleeves and do the necessary typing to create the engine that drives the application.
When it comes to web applications, you couldn't pay me enough to trade in my ASP.Net for jsp, php, etc. (well, you could, but the cost would be prohibitively expensive).
Desktop apps are different beast though. The framework requirements effectively kill the hope of small developers trying to use .NET to redistribute desktop software. It's easy to write them in a corporate setting, since users will most likely have the necessary fw to run the app already.
Delphi? Ahhhh, kill it with fire!
-
Re: VBForums' new heavy .Net hand
Actually the thread started because I was getting the impression people in the VB6 forum were being given "move to .Net" as an answer to every problem. It seemed somewhat inappropriate, even hostile. :mad:
It was made clear to me that we were dealing with an influx of newbies though, and I have to say I agree that picking up VB6 from scratch today is not the wisest investment in effort for most people. :sick:
When Delphi got tossed into the mix I foolishly stated my opinion that I don't think it's a good newbie option either. This left me admitting that I don't see good beginner choices for Windows right now besides the two primary .Net languages. Truly a shame. :down:
So at that point everyone wanted to be heard, and the result as always turns into a bit of a mud fight. It can't be helped. :eek2:
Next time I'll just shut up. :D
-
Re: VBForums' new heavy .Net hand
Well, there really isn't a set "starter language" for programming. VB is chosen by default simply because it's "wordy". .NET is chosen because today's tech instructors are lazy and the CLR handles all the things that programmers used to have to code for (like memory management).
Just to give you an idea, COBOL and VB were the two primary languages offered at my school. Java you say? A six week summer course (gee, thanks!). The only way to get exposure to javascript was to take an advanced web programming course (which, looking back, I wish I would have done). Anyway, C wasn't offered at my school. I didn't even know that there was a C++ course offered until AFTER I graduated. Why? Because it was taught in the math department. Most of the computer-related courses I took were offered in the business department. It was weird to me. I finish learning about earnings per share in Finance, then go listen to an Oracle PL/SQL lecture in my advanced database class.
I don't know how common this is, but I hear from more and more people that "old" languages aren't being taught anymore. Which is funny to me, because last time I checked, C++ was object-oriented. Seems like a lot of schools are focused on pushing either Java/VB or Java/C#.
But I've deviated from the original discussion. I feel that if someone is using VB6 and has a problem, we should help them with VB6, whether they are a new programmer or a 20+ year veteran. Now if someone ASKS whether to use VB6 or .NET, then obviously more people are going to say go to .NET, as they should.
The only thing that really ruffles my feathers is when people use outdated VB6 syntax IN .NET, creating strange VB6/VB.NET hybrid programs. You need to do one or the other. This is highly visible in the VB.NET forum.
And I can't believe that "On Error/Resume Next", which is the most evil form of error "handling" I've ever witnessed (other than not handling the error at all), is still supported in Visual Studio. Seriously, is there a .NET coder out there still using this?
-
Re: VBForums' new heavy .Net hand
I started with BASIC on a TRS-80 Level 1. My second language was ASM (which I have now largely forgotten), then C++, then VBA, VB5, VB6, .NET, etc. You can start anywhere.
I write internal apps, so security is not an issue for me. However, it seems to me that you can buy pirated copies of Windows, and just about anything else. So, how secure is your code? Not at all secure! The thing that protects Esposito is that his code is not valuable enough for somebody to go to the effort of pirating. All protection schemes are based on the assumption that anybody who wants to crack a program will evaluate the effort/reward matrix beforehand. It's not a matter of making it impossible, it's just a matter of making it not worth the time, which can be achieved most easily by making the project only suitable for a niche market. ALL of my programs fall into that category, so I can write in anything I want. I can post the source code on line and nobody will steal it.
No language will protect you if your code is valuable. No protection is worthwhile if your code is not.
-
Re: VBForums' new heavy .Net hand
I've gone a similar route... starting with Apple BASIC, then PC BASIC, then moved on to Pascal, ASM (which I think made a better developer when it comes to build efficient code, there are some constructs which perform better than others), ANSI C, VB3-4, VBA, VB6, VB.NET (all).... in there I've also picked up COBOL, ADA, plus I don't know how many different flavors of SQL. One thing that has helped my transitions between languages, is that no matter how esoteric they are or verbose they are.... there are certain constructs that are universal... loops, conditions, assignments, and so on... the trick is to simply learn what the different constructs are for each one - the differences in how an IF works in different languages is actually quite minimal.
I too write internal apps.... and I think that's what MS is truly targeting with the .NET Framework. I don't think it was intended to target game makers, or people who make apps to sell (most of which are written in C/C++)... they're targeting the internal shops, the enterprise organizations that have home-grown apps. Granted our niche isn't as small as shaggy's is, we do have a number of competitors... but I'm sure they have their own suite of apps that they've built to track the samethings we track. We just believe we do it better.
-tg
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by Shaggy Hiker
I started with BASIC on a TRS-80 Level 1. My second language was ASM (which I have now largely forgotten), then C++, then VBA, VB5, VB6, .NET, etc. You can start anywhere.
I write internal apps, so security is not an issue for me. However, it seems to me that you can buy pirated copies of Windows, and just about anything else. So, how secure is your code? Not at all secure! The thing that protects Esposito is that his code is not valuable enough for somebody to go to the effort of pirating. All protection schemes are based on the assumption that anybody who wants to crack a program will evaluate the effort/reward matrix beforehand. It's not a matter of making it impossible, it's just a matter of making it not worth the time, which can be achieved most easily by making the project only suitable for a niche market. ALL of my programs fall into that category, so I can write in anything I want. I can post the source code on line and nobody will steal it.
No language will protect you if your code is valuable. No protection is worthwhile if your code is not.
That's a basic security concept in general, having something not worth stealing 99.999999999999999999% wont get stolen.
And the whole code protection thing really isn't about protecting your code, it's about not making it worth the effort for someone else to get it.
Also I agree with the whole "if it's started in vb6 and help is needed then help them in vb6 or don't try to help at all" notion too. I also recommend all new projects to be started in vb.net (or other newer language) instead of vb6
dilettante, in this case you shouldn't "shut up" because that implies that you started to say something and need to stop, what you should say is "next time I wont open my mouth in the first place" figuratively of course :p
-
Re: VBForums' new heavy .Net hand
Quote:
Also I agree with the whole "if it's started in vb6 and help is needed then help them in vb6 or don't try to help at all" notion too. I also recommend all new projects to be started in vb.net (or other newer language) instead of vb6
In principle I agree... in practice, not so much... a lot of it is case by case too.. if they are trying to do something in VB6 that would be better in the long run to be done in .NET.... and they aren't going to lose much (benefits out weigh the costs) then what's wrong with a suggestion of switching to .NET?
But just like most of the other points in this thread, a lot of it is case by case. There's no one perfect answer.
dilettante - what's an even bigger shame is the lack of fundamentals that are seemingly to either being taught less and less or not at all.... "let's jump straight into the code" ... more often I see newbies trying to jump into the Olympic diving pool when they have yet to learn how to swim properly. That's the real shame.
-tg
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by Shaggy Hiker
The thing that protects Esposito is that his code is not valuable enough for somebody to go to the effort of pirating. All protection schemes are based on the assumption that anybody who wants to crack a program will evaluate the effort/reward matrix beforehand. It's not a matter of making it impossible, it's just a matter of making it not worth the time, which can be achieved most easily by making the project only suitable for a niche market. ALL of my programs fall into that category, so I can write in anything I want. I can post the source code on line and nobody will steal it.
No language will protect you if your code is valuable. No protection is worthwhile if your code is not.
Believe it or not, all of my software used to be cracked when I made use of a registration key to remove the shareware limitations. Then I started to distribute a limited version of my products as shareware that could not be cracked (simply because some of the code to save the data was not included) and since then my sales have increased significantly.
About twenty different Italian software magazines that are distributed at national level have published my applications on several occasions, for a total of more than 300 publications.
The truth is, hackers are ready to crack anything that is downloaded by a lot of users. My software sells quite well not because it is based on some complicated architecture but simply because people need it to release invoices, store their contacts or videotapes etc.
Until recently, software protection was an enormous headache for me and I didn't even use .NET. Anyway, the main reason why I can't switch to .NET is its dependence on the Framework that, as I said, would cause my sales to tumble.
-
Re: VBForums' new heavy .Net hand
Then you are in a situation where you are creating something valuable enough to steal, and have to concern your self with theft, a situation that few people share.
If I were you, though with my background, I'd be writing solely in C++. Not only will the code be more portable to different platforms (which may matter some day, even if it doesn't matter now), but it will also be in a language that isn't going to change significantly, because nobody truly controls it. Especially with that widget tool mentioned earlier, there really isn't a good reason to choose any other language. You have learned VB6, and found Delphi easy to master, so C++ would be a minor challenge for you.
As for what a new programmer should learn: They should learn some flavor of .NET or C++. The former has a shorter learning curve and broad applicability, while if you learn the latter, the knowledge gained will make the transition to ANY other language (except perhaps for Lisp) relatively easy.
-
Re: VBForums' new heavy .Net hand
Quote:
MS didn't care about the millions of VB programmers who were unwilling to embrace .NET because they developed native applications for the general public and using an indecently huge framework would have meant shooting themselves in the foot.
No, they do care, that is why VB.NET exists and that is why they gave you years to transition over. Had they not created the .NET framework, then people would be complaining that it's a stagnant language and just find something that addresses their needs in today's real world. As mentioned (maybe it was another thread), the world of development is always about change.
If the programmers were unwilling to embrace .NET, then is it MS's fault or the programmers' fault? I'd say it's the programmers' fault, because they made a set of misconceived notions about the language (stable, static, stagnant).
What if others started making assumptions about the operating systems? "Oh, we'll never need anything beyond Windows 2000". Or "We'll never need more than 640K of RAM". :p
Think about it... would we have WCF services in VB6 and COM?
-
1 Attachment(s)
Re: VBForums' new heavy .Net hand
Here I go again (JuggaloBrotha being right of course):
Quote:
Originally Posted by mendhak
Think about it... would we have WCF services in VB6 and COM?
That's a funny one.
Sure we would, in a sense. If VB.Net hadn't killed VB to force itself on the market we'd have a fully modern VB7, 8, 9, etc. over time.
The funny part is that Windows 7 introduces a new WWSAPI and developer tools to provide native code web services that can interoperate with WCF. Why? Simple, two reasons:
- Even Microsoft doesn't use .Net for real products (Office being the canonical example).
- .Net WCF is too danged slow and memory hungry!
There is a thread in this forum where I gave the link to the Channel9 PDC 2008 session on this.
The good news for VB6ers is that though the tools for using WWSAPI are C++ specific, somebody is very likely to create VB6 tools for WWSAPI soon. PocketSOAP's VB6 WSDL Proxy Generator is already darned cose.
-
Re: VBForums' new heavy .Net hand
Absolutely. And the next step in the evolution was - wait for it - VB.NET.
I am aware of WWSAPI, but WCF being 'slow'? Please, carpenters and tools ;). WWSAPI was created for different reasons. I appreciate you trying to attribute reasons to them but that's a human tendency to make assumptions. None of those reasons are true, they are cynical speculation. All companies make decisions and the decisions are made for a good reason. It's only someone who disagrees that would say otherwise.
To illustrate it further, I generally do it for Apple based products and technologies, simply because I do not like them.
Now, of course someone could even write a wrapper for WWSAPI or WCF for VB6, but I'm going to use a more robust solution - WCF itself - for my web services, I don't actually plan to wait a few years for Win7 adoption to get my web services out. WCF works very well, of that I can assure you. That graph of course is to be expected. It is native code. But then some context would help. Was it netTcp or wsHttp?
-
Re: VBForums' new heavy .Net hand
Actually WWSAPI will be back-ported to Vista and XP in a matter of months according to that PDC presenter. ;)
The chart was for HTTP as labeled. The TCP chart from the same presentation shows WWSAPI at around 32,000 operations/second vs. 19,000 for WCF.
Even more interesting was RPC over TCP on the same chart at 77,000 ops/sec. And of course good old DCOM works over RPC. :D
Then there are the even more pronounced differences shown in the memory and CPU cycles consumption comparisons.
I always enjoy the classic Performance comparison of DCOM, CORBA and Web service as well. :p
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by mendhak
No, they do care, that is why VB.NET exists and that is why they gave you years to transition over. Had they not created the .NET framework, then people would be complaining that it's a stagnant language and just find something that addresses their needs in today's real world. As mentioned (maybe it was another thread), the world of development is always about change.
If VB6 users had wanted to develop in byte code and depend on a cumbersome virtual machine, they would have switched to Java at least ten years before Microsoft released .NET.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by dilettante
Actually WWSAPI will be back-ported to Vista and XP in a matter of months according to that PDC presenter. ;)
The chart was for HTTP as labeled. The TCP chart from the same presentation shows WWSAPI at around 32,000 operations/second vs. 19,000 for WCF.
Even more interesting was RPC over TCP on the same chart at 77,000 ops/sec. And of course good old DCOM works over RPC. :D
Then there are the even more pronounced differences shown in the memory and CPU cycles consumption comparisons.
I always enjoy the classic
Performance comparison of DCOM, CORBA and Web service as well. :p
But can I see where you got it from? I want to read up on it. I probably won't use it, since the performance benefits won't outweigh the maintenance efforts involved, but I should know first.
@esposito: See my comment about cynical speculation.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by mendhak
But can I see where you got it from? I want to read up on it. I probably won't use it, since the performance benefits won't outweigh the maintenance efforts involved, but I should know first.
Of course. Start with Building web services in native C/C++ code – PDC 2008 talk slide deck and demos. The slides contain some of the simpler performance comparisons.
It probably won't help much if you program in .Net though. P/Invoke marshalling overhead will probably cancel much of the benefit.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by esposito
If VB6 users had wanted to develop in byte code and depend on a cumbersome virtual machine, they would have switched to Java at least ten years before Microsoft released .NET.
The first version of .NET was 2002. Ten years prior to that was 1992. Java? That was released in 1995, so VB6 programmers certainly wouldn't be switching in 1992, though that is not the point. The point is that we are working in a field that has ZERO continuity and ZERO stability. If anybody looks back over their careers, if they have any age to them, they can remember all kinds of mini-milestones. There is no mainstream language in use today that is the same as it was 10 years ago, and that includes C++ and C. After all, ANSI-C, the most stable, standardized, language that is in widespread use, got a new revision in 1999, after which it took a little while for the compilers to catch up. By 1997, ANSI-C++ was out, but there were few, if any, fully standard compliant compilers by 2000.
VBx had a long run (though VB6 had a run of only a few years between release and .NET), but that run was only about 7 years, since modern VBx was the leading VB only from VB4 (around 1995) through 2002 when .NET came out (it's still around now, but then, so is COBOL).
Dwell on the past if you will, as you have demonstrated a need for something other than .NET, but keep in mind that you work in a field where you become a fossilized niche player if you stick with a technology for ten years. You came of age in VBx and resent its demise, but had you started in an older language like C, you would STILL have seen it change radically. You need certain things in a language, and it sounds like you've found them. As for me, I have wandered around, and am happier with .NET than with any other language I have used. I have no resentment about change, even as it is threatening to clobber me at the moment (I haven't done web development, yet).
-
Re: VBForums' new heavy .Net hand
What I find strange about the whole thing is, as Billy Hollies mentioned in an article before (him being a major VB evangelist), The CLR was originally designed for VB (before .nets inception). Obviously as they refined it more it actually became a common language runtime.
Tell me if VBx had not changed to VB.NET but still used a framework and became VB7 with the "Visual Framework" would you still give out? I would argue that many VB6 developers would have moved with heads held high and smugly looked down at java developers and their "inferior" framework. Actually on java, I dont think many developers would move to java as quickly as you think. Java has had more "what its used for" changes than any other language. At least VB in every form stayed true to its goal RAD WIN development.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by DeanMc
Tell me if VBx had not changed to VB.NET but still used a framework and became VB7 with the "Visual Framework" would you still give out? I would argue that many VB6 developers would have moved with heads held high and smugly looked down at java developers and their "inferior" framework.
Possibly, I was unable to emphasize strongly enough the two reasons why I had to drop the idea of switching to .NET. Well, they are (1) byte code and (2) Framework size. It is not a question of looking down on Java developers: to be honest, I couldn't care less about them. All I care is that, if I used .NET, my sales would surely take a dive.
-
Re: VBForums' new heavy .Net hand
I agree. I think you've done sufficient research to back up that statement. However, your case appears to be fairly unique, so it would hardly be valid to consider yourself a typical VB6 user. I suspect that I am a more typical user, as I work in an organization producing programs for internal use with no sales consideration. For me, .NET is an excellent thing, and I have no desire to ever go back to VB6. I don't even like maintaining the things I wrote there, because the IDE is so inferior.
You've made the right choice for your situation, but your situation is atypical. MS made the decision to abandon your segment of the world, as far as VB is concerned. They have not totally abandoned the segment that needs to compile to native code, as VS C++ is a pretty good C++ compiler, but your segment consists of the group that need to compile to native code, or something near to that, but who does not want to use C/C++. That's a small group, and it doesn't surprise me that MS abandoned them. They were focused heavily on the web and the threat posed by Java, as you yourself noted several posts back. Interestingly, there WAS another version of VB6 in the works, which was terminated in favor of .NET for the explicit reason that they wanted to put all their wood behind one arrow. Therefore, the decision wasn't exactly one of omission, in that they knew that they abandoned one segment in favor of a different direction. The same could be said by the programming community in general. In time, Delphi, .NET, and even C/C++ will all fade away. Unfortunately, when it comes to programming languages, a phrase such as "in time", which usually suggests a long time off, probably means less than ten years.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by Shaggy Hiker
VS C++ is a pretty good C++ compiler
VS C++ is not a compiler.
Sorry, I didn't want to point this out but was forced to... by the voices... in my head... I'll stop...
Quote:
Originally Posted by Shaggy Hiker
In time, Delphi, .NET, and even C/C++ will all fade away. Unfortunately, when it comes to programming languages, a phrase such as "in time", which usually suggests a long time off, probably means less than ten years.
C/C++ will never fade away. Delphi? Possibly. .Net? Probably but not C / C++.
C is about 37 years old. C++ is about 26 years old. Since their creation both languages have undergone some major changes to keep them fresh but their purpose has remained the same: for high performance, low level, typically for driver creation and other performance important areas, C is king. Where you need high performance but a higher degree of architecture, C++ is still king. This hasn't changed in decades and I can't see it ever changing.
In our current hardware architecture you need a few things to develop an operating system: you need ASM for the boot loader (there is no way you can do this in C, as far as I know (at least not the important bits)). Then you need to write the kernel, drivers, etc which is typically done via C/C++.
If we are to truly drop C and C++ at some point, what will we replace it with for embedded systems and operating systems? Surely you can't go with a language tied to any framework (regardless of C#'s standardization; I haven't seen a set of libraries and a compiler for C# that is .Net or Mono independent) so C# and Java is out (at least for the core pieces of the OS).
C++0X (or maybe it should be called C++1X at this point) will refresh C++ and keep it in line with many technological improvements other languages are undergoing including dynamic types and even LINQ. Once the standard is finalized it'll still take several years before all of the features are well integrated into current compilers and tested.
I can see Delphia fading away. I can see .Net fading away. I can't see low level languages such as C or C++ ever fading away as we'd have to replace them with basically the same thing: a low level, high performance language. Do we replace it with D? Ha!
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by Shaggy Hiker
You've made the right choice for your situation, but your situation is atypical. MS made the decision to abandon your segment of the world, as far as VB is concerned.
Yes, I had figured that out. That's the main reason for my lack of trust in them. Here in Italy we have a proverb that goes this way: You can only strike a match once! How could I switch to .NET knowing how much MS care about the developers using their products? They struck my match when they abandoned me and I swear it won't happen again.
-
Re: VBForums' new heavy .Net hand
Stick with a language that has ANSI backing, and is not tied to any particular company. Sun originally talked about getting ANSI standardization for Java, then pulled back and the whole thing devolved into lawsuits. It may have been related to MS putting out a java compiler in a fashion similar to what they were doing with Visual C++ at the time (not fully standards compliant because the standard was still only in draft form). That irked Sun, which really wanted to continue owning Java, even with the standard.
I believe that Delphi is based on Pascal, but I don't know if Pascal is a standardized language, or if there are any number of flavors out there. If there are flavors, you might as well hold onto something, as the world is going to shift out from under you again at some point in the future.
The only reasonably safe language to work in for what you want is C/C++, as both are ANSI standard languages which are not controlled by any company. Delphi may be more stable than an owned language like VB, but if the user base is small, and it isn't ANSI standard, then it could fade out on you just as easily as mutating. That's life. On the other hand, I can understand not wanting to jump to a third language so soon after switching to a second language, but you jumped from one ice flow to another, just as the first was capcizing under you. Unfortunately, you are still on an ice flow, and hoping that it neither melts nor flips, despite good reasons to think that it will do so. Eventually you will be jumping again. Might as well jump onto something stable, such as C++.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by DeanMc
What I find strange about the whole thing is, as Billy Hollies mentioned in an article before (him being a major VB evangelist), The CLR was originally designed for VB (before .nets inception). Obviously as they refined it more it actually became a common language runtime.
Tell me if VBx had not changed to VB.NET but still used a framework and became VB7 with the "Visual Framework" would you still give out? I would argue that many VB6 developers would have moved with heads held high and smugly looked down at java developers and their "inferior" framework. Actually on java, I dont think many developers would move to java as quickly as you think. Java has had more "what its used for" changes than any other language. At least VB in every form stayed true to its goal RAD WIN development.
multithreading was a huge benefit of .net, but it could probably have been implemented into a new "runtime". Hopefully in the near future, microsoft will do for .net what vb5 did for the runtime: The ability to compile to native code. Let's face it, this isn't the first time basic's been interpreted as it was ran, but now they are calling it a "framework". Besides the honking-big size of it, i fail to see the difference.
On the "huge framework" front, don't forget how modern computers are finally being shipped with 64-bit operating systems now. And the 64-bit framework is twice as large since it also contains the 32-bit one for compatibility.
-
Re: VBForums' new heavy .Net hand
Quote:
Originally Posted by Shaggy Hiker
The only reasonably safe language to work in for what you want is C/C++, as both are ANSI standard languages which are not controlled by any company. Might as well jump onto something stable, such as C++.
I have to admit I am quite attracted by C++ as I heard it is not as difficult as one may believe.
Unfortunately, I don't know where to start from. The main questions I have are,
1. How much does it cost?
2. Does it have a form designer which works in a similar way to the VB's one?
3. Do the executables you produce with C++ need any runtime files to work on Windows?
Please note that the only operating system I am interested in is Windows, so I would like to avoid installing any components which are necessary to create software for other platforms.
Any help would be greatly appreciated.
-
Re: VBForums' new heavy .Net hand
There are many compilers for C++, the cost being from zero upwards. I personally can't advise which are good/bad, as I haven't used it in years (last time was MS VC 5 or 6).
The features vary, but a form-designer/window-creator is common (even on the occasions it isn't built-it, there is usually a fairly easy add-on for it).
Whether or not you need dependencies depends on what compiler you use, and what features you use in the program. Often you will have the code files for those features, so can simply add them to your project (or they are included automatically when you compile).
The downside to using a C based language is that your development will typically take longer - but how much depends on what pre-made features you can make use of.
Quote:
Originally Posted by esposito
How could I switch to .NET knowing how much MS care about the developers using their products?
They do care, to the point you could hope a company would - which is why they did what they considered to be best for the majority of the user base (and as you have seen, a large percentage of the user base agree with them).
Due to your special circumstances, you did not fit into the majority, and the changes were not good for you - but if I remember correctly, Microsoft put a lot of effort into helping you one on one with the issues you had (but I might be thinking of somebody else they helped). To me, that proves they cared about you too, but weren't able to give you what you wanted (at least not without a huge cost to them, which is unreasonable to ask for).