South Africa’s biggest forum. Discuss, discover, and connect with thousands of members.
Hi
All the Express Editions are free to develop and distribute applications. It's a bit limited in features compared to the other versions, but should be sufficient for most basic projects. Depending on what you want to code or if you're just starting out, Netbeans or Eclipse could also be considered alternatives...
Naturally with .NET one doesn't have much choice, it's VS or nothing.
Netbeans
Delphi very structured which is good for start. Its losing supporters though atm so I'd give it a miss.Delphi vs. C++ vs. VB vs. C# (I think those are the main ones right)
A murder of programmers.Who's the programming crows? Naturally, most people will recommend C# because, you know, it's just that good...![]()
A murder of programmers.![]()
Not true. There's SharpDevelop (Windows) and MonoDevelop (Linux)
I've used SharpDevelop and it's not bad. Until they release v4 (no date set), you probably better off with Visual Studio 2010 Express.
What are you okes on about? The OP asked if VB Express could be used to make (commercial?) applications - nothing was said about learning VB...
We're participating in ingeon's derail.What are you okes on about?
Of course ActiveX and VB will work well together...they are both nasty. /jkWe have a particular app that uses VB.Net simply because of an ActiveX DLL we have to encapsulate - it turns out that VB (2.0) releases the DLL memory better than C#.
Why Java instead of .NET: In .NET you have all these "HANDY" things, like objects without types, yes ok they have types but your declaration doesn't require a type, now I can already see bad habits forming. Say what you will, declaring variables without type makes maintenance more difficult and its a bad habit using it unless absolutely necessary (and I can't see where it is necessary).
Overloaded operators, you know how many times I've seen people use the == in Java/C# and have no idea what's going on behind the scenes? Rather learn to use .equals when objects need to be compared and == when you want to compare object references. Yes it can be done in .NET but in Java you are forced to recognize that the actual reference lives on the stack and == compares the references whereas .equals compares the actual object on the heap/stack.
These stupid value types in .NET (structs), just confuse a beginners, value types aren't OO, Java isn't completely OO either because they have primitive types but at least you only have to deal with those few that Java already has, in .NET they just go ahead and allow the creation of more value types, not good idea for a beginner I reckon.
If you read further you'd see I said it does have type, but you can declare without specifying type, its bad practice and allows for sloppy coding with decreased readability. I was talking about the var = you clearly got what I was saying. I cannot think of a single time I have ever required the use of a WHATEVER you call that var = thing in C#.Sorry what? Please show me how you can declare a variable without typing it in C#? The closest thing I can think you might be refering to is the use of "var =" which is merely sugar coating the syntax in order to infer types from the object you are assigning to it. The compiler will fill in the type for you. It was designed for anonymous types, which are also very useful. It is not however the same as declaring a variable without a type. I'm not sure of anything else that you could be refering to, so please elaborate. I fail to see the merit in your argument
Hmm, I don't want to cover this, we covered it thoroughly in programming languages while I was a student and it is thoroughly covered in programming language literature, it is generally excepted that for beginners overloaded operators are a bad thing for a number of reasons. Operators aren't always intuitive and the meaning of an operator isn't always clearly deductible, not to mention that it is commonly abused by beginners in ways that decrease readability rather than increase it (which is the only reason for the existence of operators). There is an entire section on it in the book I used as pre-grad, Concepts of Progamming Languages Eighth Edition, Robert W. Sebesta, you are welcome to take a look if you wish.I don't see anything wrong with operator overloading. I think it's essential that developers understand how to implement IEquatable and IComparable properly, and for those that need it, how to overload an operator. It can make life a whole bunch easier for some specialised classes. Here's an article with a valid argument on this topic: http://visualbasic.about.com/od/usingvbnet/a/opovrld01.htm. I have used operator overloading for one of my own classes which is essentially a new datatype. Without operator overloading, the meaning of the class would have been lost, and I would have had to create methods called "GreaterThan" and "LessThan" etc.
You infer that Java objects cannot live on the stack when in fact they can, the GC will place an object on the stack if it determines that it is prudent, so that point is moot.Creating value types that have less overhead and live on the stack instead of pushing everything onto the heap is a bad thing? For small pieces of data that are very simple, structs can give a performance boost. Who cares if they don't adhere to strict OOP concepts when they can bring about a performance benefits. They can implement, just not inherit.
I don't think you can want something removed from a language just because a beginner might not understand it. That's ridiculous. Where would software development be if people didn't have the option of using things that can improve their applications just because someone felt they were not easy for beginners.
If you read further you'd see I said it does have type, but you can declare without specifying type, its bad practice and allows for sloppy coding with decreased readability. I was talking about the var = you clearly got what I was saying. I cannot think of a single time I have ever required the use of a WHATEVER you call that var = thing in C#.
Since you can't think of why it is bad, clearly you aren't well schooled in programming languages so I'll spell it out for you:
If you declare variables like this:
var x;
var y;
var k;
x = new Int32();
//20 lines later
y = "Hello World";
//50 lines later
k = DateTime.Now;
I cannot think of a single time I have ever required the use of a WHATEVER you call that var = thing in C#
Now you wrote that code and its running on a system. A few weeks later something breaks, and you have to fix that code. Even if it isn't someone else who has to fix it, I hardly think you'd remember what was happening there. If you still don't understand it then you probably just aren't very experienced yet and you'll see. Its the same as trying to debug JavaScript (which only uses inferred types) VS. Java, not nearly the same experience.
Readability suffers, with minimal or no increase in write-ability and your debugging becomes exponentially more difficult.
Hmm, I don't want to cover this, we covered it thoroughly in programming languages while I was a student and it is thoroughly covered in programming language literature, it is generally excepted that for beginners overloaded operators are a bad thing for a number of reasons. Operators aren't always intuitive and the meaning of an operator isn't always clearly deductible, not to mention that it is commonly abused by beginners in ways that decrease readability rather than increase it (which is the only reason for the existence of operators). There is an entire section on it in the book I used as pre-grad, Concepts of Progamming Languages Eighth Edition, Robert W. Sebesta, you are welcome to take a look if you wish.
You infer that Java objects cannot live on the stack when in fact they can
Strict OO concepts are important for beginners whom are still learning, so as not to pick up bad habits, that is why it is important. Ingeon asked what language is good for someone whom is beginning and I answered with what I believe are valid points why Java is better than .NET for a beginner.
I see, now I like it even less, you can just go and create types on the fly, LOL, damn. That is bad.please try compile "var x;" in c#. You can't. None of what you typed there will compile. And i'm not schooled in programming? The error you will receive is "implicitly typed local variables must be initialized". var in c# is not the same as var (varient) in VB6 where you could stick anything in it. var in c# is strongly typed (implicit typing). There is some more reading here in case you'd like to try again: http://msdn.microsoft.com/en-us/library/bb383973.aspx
Just because I haven't used it doesn't make it crap. Its crap because it is. Why not write in Javascript then, you can do the same thing there.lol... "I never needed it, so therefore it's crap". Like I said, it's for Anonymous Types. I take it you do not use Linq. var was created primarily for use with linq.
var productQuery =
from prod in products
select new { prod.Color, prod.Price };
more reading for you here: http://msdn.microsoft.com/en-us/library/bb397696.aspx
I never said it is not strongly typed, I SAID IT MAKES IT LESS READABLE, IE. maintenance becomes more of an issue. I'm sorry but there is no point arguing, I don't agree with the .NET way of doing things, every time I read it I'm reminded of Javascript and its a nightmare, time will tell if these new "features" will catch up in the industry.In fact, .Net 4.0 now has the DLR (Dynamic Language Runtime) to deal with compatability issues when integrating with dynamic languages like javascript, which allows you to keep your code strongly typed. C# is all about strongly typing. Go read up on the DLR and dynamics.
I don't miss operators, especially with a modern IDE you can simply scope and then start typing the name and its there. No room for ambiguity. Regardless, my and your opinions differ. The Java creators believed, as I do, that overloading operators are a bad idea, MS on the other thought otherwise. For beginners I think it is even more important, naturally you don't care either way.Again.. the beginner argument. Once you pass that step and are no longer a beginner? Oh wait, you still can't do it, because operators can't be overloaded, because they thought it was bad for beginners.
You say that the advantage is that it is a stack type, I say that it is not an advantage because Java can do the same with POJO's. What was the point of saying that it is on the stack then? Of course that is what you inferred. We are talking about Java and .NET, what you think we are talking about C++?No, i did not. I do not know Java inside out. In fact I know very little about how Java works. You infer that because I counter your posts on how bad .Net is, that i dislike Java. I have a lot of respect for Java, and use a number of applications built in Java on a daily basis.
And I can't see the advantage, the GC has been shown to be more effective at memory management than humans. In the early days of GC it was an advantage, now its just a burden IMHO.We're not talking about a structured language here, C# is OO. The fact that you can create your own value types is a plus in my books... even if that's not OO in itself.
On Windows and Microsoft products you mean, remember .NET pretty much means Microsoft. Yes yes, we all know about Mono but let's be realistic, people on other platforms aren't bothered by Mono. Its mostly Java and C/C++ on *nix platforms as well as embedded (or Java as you say). Btw. JavaFX is similar to Silverlight, time will tell to see which catches on, I haven't seen Silverlight used much (at all actually) but neither have I seen JavaFX used. Just wish there could be some kind of open standard that all platforms can use, because I *HATE* Adobe flash. Its a pain in the ass.I tend to prefer the C# route because it opens the door to a number of other really interesting platforms (Silverlight, WPF (with MultiTouch), WCF, WF, ASP.Net, DirectX and XNA etc.). I can use the same language to code for my xbox, my desktop, my phone, my robotics, and my webserver. While Java is doing quite well in the server and mobile markets, it's still catching up on the desktop environment, and has a long way to go before it can come close to competing with the likes of WPF and Silverlight.
I used .NET up until 3.0, since then I haven't been keeping up too much, my work is largely in web-development and we don't use .NET, I did however write some AI applications in .NET (3rd year) so in terms of the language, you couldn't be more wrong. The "features" like var x = bla bla, I only noticed when a guy I had to do a project with in 3rd year used them, then when we were debugging we had endless problems, hence the reason I brought it up. He was 3rd year and he still fell into that trap, God forbid, I'm sure others have done the same and MS will keep touting it as feature.I'm not going to shred Java. It's a fantastic language.. one that I quite respect. I do believe that you do not have a deep inderstanding of .Net.
And I think that Java is better for BEGINNERS!!! Once again, he asked for a beginner, I gave my opinion. C# and Java both have their place, I just like Java when you start out, I like that they force the safe approach on you (yes you can still write bad code, but its so easy in .NET), that and PascalI am also not going to sit here and banter back and forth with someone that does not want to put in the time to research what they are writing.
Java and .Net are both good options.