C vs. Java vs. VB
This is page 2 of the discussion. Read the opening post
Web Development
This is page 2 of the discussion. Read the opening post
I've only done machine code, basic, pascal, c++ , Delphi, VB, ADA, Occam, Prolog and umpteen scripting languages.
Nice to see someone who makes me look like I just completed my first VBA macro, now I'll know who to ask when I get stuck.
I've yet to see anything that was simplified by ActiveX either, may have been the idea, but no way was it the actuality.
Do you think two syntactically distinct and unequal methods of describing the same interface contract will cause confusion ?
Nah.
If we agreed on everything, WTF would we talk about?
In fact in the interest of continuing the thread. My alias is better than yours, so nah !
by jaqui
no more trusting your answers to programming stuff.
not if he's done more languages than you have.
and here I had thought you actually knew something.
;)
It just makes me feel old rather than wise. I could mention that I was on the ANS X3J12 committee for standard DIBOL that approved the 1992 standard, that I've written a few special-purpose languages myself, and that I advise Synergex (http://www.synergex.com) on extending their version of the DIBOL language to be object-oriented (which will happen in their next major version - 9.0). But I don't want to toot my horn too loudly (vbg).
Anyways, what makes a language good is not that someone says it is, it's how well it works for your specific needs -- and perhaps more importantly how well the code you create with it ages. The latter has a lot more to do with design than the language itself, but the quirks and capabilities of any given language predispose you to use certain design principles, and to take certain approaches to a problem.
by apotheon
Writing code in any language is not programing, it's translating. You have your design and you implement it in a language on an operating system on a platform.
No design = crap program.
No discipline and standards = soon to be crap program, no matter how good the design.
Some languages are incapable of implementing a design, not some designs can't be implemented in a language.
My first formal programming exercise and the one with the most value was
Write down what buttons you would press to make your calculator multiply 3 by 5.
It was amazing how many of us had missed the first step, turn it ON !.
by hlhowell9
There are all kinds of languages floating around. However, in procedural languages and OOP languages, what you learn in C of any flavor will transport easily. VB won't. Java has a great deal going for it, but learning and implementing an exception handler will make more sense once you have exceptions and handler code under your belt in C.
If your C package includes a native in-line-assembly capability, you will want to play around with that a bit after you have C well in hand. One of the best ways to get fast programs is to code the whole thing in a good language that compiles, and has an assembler option, then profile the run time, and optimize only the real time conusuming bits (generally less than 5% of your code) in assembly. This method will make your programs 10-20% faster than all but the very best high level code hackers, and you will find yourself very valuable everywhere.
Regards,
Les H
by apotheon
by evmafau
Best way to find information is to get differing opinions. I knew there were plenty of languages, but the only ones I've had any exposure to have been C-based, VB, and Java.
My purpose was to find a good language that is going to be a marketable skill and I can teach myself. As I said originally, I've done some basic programming, but not enough that I could walk into an interview and say that I thouroughly understood the language. I'm stuck in a situation where I'm the IT department for my company and I'm not going to get more experience than what I have, but I haven't picked up enough skills to get the job I want.
The debate about all the other languages has just opened up my mind to how much more there is to learn after I get one under my belt and find a good situation where I can pick up more skills.
Education comes from the debate, so I welcome the arguments.
as well by the way.
One thing I would be wary of, OO is not always the best solution to a problem. It's a damn good way of thinking about things at a high level and very logical in terms of thinking about processes. Essentially it came out of a concept of dealing with data in terms of the operations carried out upon it, along with some structured standards such as encapsulation. Because I'm an old fart, I worked pre OO, so one of the things that I do understand is the why of it, and I think starting at OO you can easily miss why it was invented in the first place. It's even worse if your appreciation of OO is a language/vendor specific implementation of it.
by jaqui
a procedural approach is much easir to design and code.
but it's definately almost always harder to maintain.
I actually learned procedural programming before learning oop, and still find that I miss the simplicity of design in procedural programming.
The problem with it isn't just code maintenance, it's functionality, the event driven computing that has been developed would be a nightmare in a procedural program.
by realvdude
I too got something out of this; least I waste my time in the debate. Just thought the debate sank lower than it needed to with the name calling and demeaning statements. It is better to invoke ones' passion in debate, than their anger.
P.S. - This will be my last post as things have gotten hectic for me again (I cover inhouse IT as well as development), so please send me a message if anyone starts a discussion up on learning Ruby.
by jslarochelle
While C# adds some syntatic sugar to Java such as the way properties are handled and other minor improvement (explicit implementation of interface methods, etc...) I really don't see how C# is a "much better OO environment".
If what you mean is that C# will give you access to some OS (Windows) specific features more easily you may be right.
But none of that makes it a "much better" OO environment. Unless you can really state the specific features of C# that make it a better OO environment I maintain my point. In fact, I think that some of the syntatic sugar in C# makes it more difficult to learn (probably not the original intent of Anders when he added the "sugar").
all you need is friends !
This is a facility that can be used in C#, Delphi and C++ , but in Delphi at least it's not recomended, in Java it is. I've made use of the equivalent myself, but I'm always aware that I'm compromising strict OO principles when I do so.
I wouldn't say Java is a bad OO environment, just that both C# & Delphi in my opinion are better. Delphi is way less of a career move though and C# a lot less established. In terms of OO my objections to Java are based on formalism and style. In terms of coding, I consider being unable to compile as restrictive, but that's a whole different ball game.
In essence Java makes me uncomfortable, so does C++ and both for different reasons. The reasons for that are more probably to do with me than the languages themselves.
worked pretty well. A few times I had problems creating a wrapper, but a lot of that was down to the same confusion over the interface description, .NET cured. Delphi's housekeeping on COM was nice, except when you had to explicitly take another reference, because you didn't want it to go out of scope.
Personally I could have lived without it. I do a lot of things by habit. Create a resource, use it free it. I'd rather do that all the time than 'forget' that I did need to do it here, even though I didn't need to do it there. Still using COM at the moment in legacy code, I'll be glad to see the back of it as well.
by jaqui
braver than I am.. doing event driven procedural programming.
though some procedural requirements actually make for good codeing practice in oop as well, like explicitly initialising your variables. [ avoiding possible random contents of the memory location causing problems ]
It may not be required for functionality, but the procedural approach to variables and memory management causes you to pay more attention to both, reducing buffer overrun, stack overrun and heap errors.
by jslarochelle
My original answer to your question was colored by the fact that in your original statement you mentioned: "not neccessarily make a career out of it". That is why I suggested Delphi. As you can see from the messages in this discussion getting an answer to your first question is not obvious. There is no perfect language (I have used a lot of languages and I have formal training in several languages). You have to select a language based on different factors.
A few pointers:
1) For an IT guy like you it might be usefull to get one language under your belt that can compile to a compact .EXE that does not require a runtime environment. This will give you the capability of building yourself little utilities that you can easily cary around and use on different systems.
C++ and Delphi are good options for that but you will spare yourself a lot of pain by using Delphi for this (I am assuming that your main platform is Windows/x86).
2) For anyone working with computers it is nice to have a very expressive language to quickly build little script to run on your development PC. These little scripts typically do not need to be fast so the best choices for that is any of the script languages like: Python, Ruby (my personnal favorite), TCL.
In a comment later in the discussion you mentionned that you would like this language to be a "marketable skill". For that you will be better with one of the more "mainstream" languages like Java or C#. The advantage with Java is that it is easier for me to answer the second question in your original message (...good books):
The "Head First Java" and "Head First Pattern" are excellant (in that order) because they will "drill" the subject into your head.
"Object-Oriented Design Heuristics" by Arthur J. Riel
"Object Design" by Wirfs-Brock and McKean
Of course the original book on pattern:
"Design Patterns" by Gamma, Helm, Johnson and Vlissides is a good rederence.
This list could go on and on but I will end my personnal suggestions with:
"Code Complete 2nd Edition" by Steve McConnell
Good Luck and have fun in 2006
JS
by apotheon
I'd add to that by pointing out:
Tcl is not the most popular, or easiest to learn and use, scripting language in the world. Stick with Python or Ruby, or go with Perl.
Perl's a good choice for finding reference material, beginner texts (Randal Schwartz and Tom Christiansen* wrote Learning Perl, which is one of the best beginning programming books ever written), and example code. It also features excellent, huge online communities: I'd recommend starting with perlmonks.org if you want a great programmer community for Perl.
For general programming practice, as a lone programmer, I cannot stress enough the value of two books in particular:
[i]The Pragmatic Programmer[/i] and [i]The Art of Unix Programming[/i].
The former of the two involves some great development strategy, rules of thumb, and so on. Don't let the word "unix" in the latter scare you, even if you're coding for the Windows platform, as it simply draws from the long unix traditions of programming technique to teach its readers a lot of valuable lessons. Not only is it valuable for programmers on non-unix platforms: it is even valuable for non-programmers who work with non-unix platforms extensively.
--
* = Schwartz and Christiansen are the credited authors on the second edition, which is the edition I have here. There's at least one later edition with slightly different author credits.
generally used under Unix. One of the things that's done a lot under 'nix is to separate the UI from the function. This is why you get the same piece of code called from either the command line or from one of several different GUIs. Under windows there's been a tendency to fracture this sensible model and mix a lot of the functional code in the UI layer. While this is 'quicker' in terms of time to market, the problems you get later on can range from annoying to life threatening.
Leaving aside various styles though, pick up good habits first, then cheat, bodge and hack when you have to.
Good habits are very simple disciplines, such as giving your variables meaningful names. There are also things that can save you lots of time and make things far more enjoyable. One of the regular mistakes you can make is to miss a closing bracket on a block.
if expr then
{
...if expr then
...{
}
Obvious here but in a lot of code, it can take you an annoying amount of time to spot it. Just doing
If expr then
{
}
then inserting the code between the braces. It's a habit that means you won't miss a closing brace if you develop it.
Good and bad habits are developed early !
Bookwise look up Brian Kernigan, Danny Thorpe is always a good read as well.
If you get stuck shout back, somebody will be able to give you a pointer. There are a lot of resources on the net as well. Make google your best buddy, it's always my first port of call.
by realvdude
I had almost forgotten about taking Fortran in college. VB3 was the first iteration I touched.
Thanks to you and others for the "heated" debate. I believe that we are all passionate about the languages we implement designs in.
The mention of Ruby sparked some interest in me also and I plan to have a look.
by realvdude
Given that you think it is a joke and it frustrated you; then the joke must have been on you.
I guess that you shutoff the compiler warnings in whatever you use for a compiler.
by realvdude
.. in this case would apply to something that has already been done. Given that Python came after C, it would be the redundant language.
Thanks for the clarification that Python is simplified C. I'm sure that your 20 lines call some routines that have a pretty specific purpose, which is fine; but I suspect there are C routines available (perhaps not in the core) for the same purposes.
In a data structures class I took in college, one of our exercises was to write routines to create, access and delete indexes in C. I have never written scratch index routines, but rather used a third party library to implement indexing.
Why re-invent the wheel, unless you are in the wheel making business.
I simply refuse to countenance the idea that VB is a good environment to work or learn in. What are you comparing it to, to say it's good ?
The joke was indeed on me, I was forced to use it on a contract, I didn't find it funny, can't say I'm pleased you are.
As for the last crack, I've been coding commercially for 18 years under DOS, windows, unix, vms, Hp, linux and Unix, so you might want to consider I might know what I'm doing. Academically I started in 1977, just because I haven't got tech in my alias doesn't mean I'm a twat.
by dr dij
vs compiled: it may be slower but computers are getting faster and may not really matter. interpreted languages are sometimes alot easier to debug. I've worked in a language where if an error occurs, you examine the data or code, change either and continue from same point or other in code.
In fact a major erp vendor tried to re-write their package in this language to c++ and never finished, scrapped it. a paragraph translates to 2 pages of c++ calls with one vendor's translation tool.
VB is sad in that it changes every other year. compare to old languages which actually have ansi standards (fortran, cobol, etc). And java has std also.
That said, I love it. I don't know much java but can do what I want in windoze with vb quickly, without huge learning curve of java, and mysterious jars that are missing (full of what I don't know).
by jaqui
two reasons:
1) you aren't happy with the way the one you have functions.
2) licensing restrictions.
by apotheon
C isn't the general-purpose language it once was, because advances in programming methodology over the years has rendered it redundant in comparison with languages better suited to a wide range of tasks. There are still many tasks for which C is the best (well known) language we have, however, so as a whole C isn't totally redundant, where in this case redundant is a synonym for obsolete.
Python isn't redundant, either, even with the existence of Perl, Ruby, and the Lisp family of languages. It appeals to the coding style of a great many programmers, and its strengths and weaknesses are just slightly askew from those of the other languages I've mentioned, so it too has its place -- especially since the language to which it's currently beign compared by you and Oz for "redundancy" purposes is C, which is good at far, far different things than what Python is good at.
Java, on the other hand . . . if it wasn't so good at limiting the damage a mediocre programmer can do on a large project with too many developers, it would be "redundant" or "obsolete". It doesn't have strong advantages over alternatives other than the aforementioned ability to limit damage, and in fact Python is nipping at its heels in the same area.
by jaqui
1 minute 30 seconds to start a program that is written in java.
25 seconds to start a program that does exactly the same thing, with exactly the same quality of output when it's compiled.
that's 1 minute and 5 seconds every time the program is started in lost productivity.
then we'll address the issue of poor programming habits generated by relying on HARDWARE to make up deficiencies in software.
bad thing.
very very bad thing.
java, or any other interpreted language, used for creating something like a word processor just says that the programmers are to lazy to write good effetive code, they would rather have hardware make up for thier lack of skill / laziness.
by hal 9000
A while ago I went to a MS meeting where we typed in the code in VB for INK a nice little program for tablets but it really was not an effective way of coding. It took about 3/4 of the day to write the code from the printed handouts and at each step we had to make sure that the particular subroutine actually worked which it mostly did.
At the end of the day I wrote the entire thing in C++ in about 20 minutes and it worked better than the MS offering that the presenter Neil something was offering. He took that code and while I don't know what he did with it I would have hoped that some of it made its way into the finished product as the VB effort was really miserable and at every MS meeting that I've ever gone to VB has always been described as the [b]EASY WAY[/b] to write code but it certainly lacks a lot of finesse.
Col ]:)
by hal 9000
Java is great for Web Pages C++ is fantastic for writing programs and VB in just plain and simple the [b]Poor Mans Language[/b] as it is so cumbersome but useful for short strings of code that are not critical to the working of the program.
As for books the Dummies Series is one of the best available for any level of competency as it covers everything from the grass roots up and doesn't require any knowledge of the subject to start with. They make a very good starting point particularly if you are not doing it every day. :D
Col ]:)
by apotheon
Java is terrible for web pages. It just gets used for web programming a lot: that doesn't make it good for that. Even the interpreter/compiler for Perl runs faster than the Java virtual machine, so if you're willing to use something slower than C on the server side, use Perl: it provides easier and faster development, much shorter programs, better server-side web programming functionality, and so on. If you want a good database-backed web development framework, Rails (using the Ruby language) is far, far better than anything available for Java. On the other hand, if you're looking for client-side applets, Java sucks at that (even though it basically invented applets): use Flash instead. Java has its uses, but whoever came up with server-side java for network and web programming must have been high or a very well-paid marketing dweeb.
C++ isn't the best OOP application development language by a long shot, but it's the best among those that are binary-compiled and widely used, so it's a good choice of language to learn if you're going to do a lot of heavy-lifting application programming.
Visual Basic isn't a poor man's language, because it'll cost you an arm and a leg -- unless you mean that buying the IDE will impoverish you, thus making it the language owned by a newly poor person. VB.NET is a huge leap forward over former versions of VB, but while being able to do a Hello World in six lines is a huge improvement over a 29-line Hello World I've seen for an earlier VB version (I don't recall which), it's still a darned sight worse than the literal one-liners you could write in Perl, Python, and Ruby. Hell, even ANSI C can be more brief than VB.NET, and that's pretty bad for a language as limited as Visual Basic. VB is better at some things than others, but even the things it's best for are much better done in other languages, so I wouldn't even go so far as to say that it's "useful for short strings of code". I hear there's (going to be? already?) a Perl implementation for the .NET framework, and I think a Ruby implementation might be in the works too, so perhaps you should consider something other than VB even if you want lightweight .NET programming. In fact, C#.NET is far easier to write than VB.NET, which is a clear testament to the failings of line-oriented programming.
by hal 9000
Coming from a mainframe environment to something like that was a real shock to the system. remember all those PEEK & POKE commands? And the IF THEN strings? :(
Actually what I meant and I should have been much clearer on this one was VB is at best used for writing Macros in a MS only environment otherwise I never actually ever use it and even then unless there is some overwhelming compelling need to I try to avoid using VB in any form at all. The latest version of VB that I have here is 6 which MS gave me as I would never actually pay for a copy of that stuff I consider it at best terrible, complicated and unwieldy. :p
Give me the days when we only had a 64K EPROM to fit everything onto and I would be happy to write something to suit which would be fast accurate and wouldn't fall over as soon as someone looks at it. But for a beginner now without the grounding that we had where we both had to write accurate and functional code on limited processing power and memory size they have such an easy life now. It doesn't matter if their code chews up 100K of clock cycles it works so who cares? :D
Col ]:)
by apotheon
You have a point about computer resources/speed. The language implementation doesn't necessarily need to be as resource-light to be able to perform at an acceptable speed as computers get faster and faster. The progression isn't nearly as fast as you make it out to be: it's going to be a gawdawful long time yet before the speed of VB and Java apps is anywhere near acceptable for the sort of heavy-lifting programming that they're both (mis)used to accomplish a lot of the time.
Both languages suffer from overmarketing: they're each billed by their respective vendors as some kind of panacea, VB to the glorified macro writer of the Windows world and Java to those paragons of lukewarm skill, the workaday corporate drones of the programming world for whom writing code is "just a job". The fact that both Java and VB are being used as server-side web/network programming languages, even with their current absurdly inefficient interpreter/compiler implementations, is a testament to the power of marketing to influence people to make moronic technology decisions.
The reason it's easy for many people to write code for Windows using VB is simple: all they're typically writing is overblown macros. You'd actually be better off using VBScript for that, and if you're going to use a scripting language you might as well use a better one than VBS. Once you start trying to put together really complex program logic, the source code for your algorithms starts to look like the Leaning Tower of Pisa in a language like VB. That, at least, is one area where Java has a distinct advantage over VB: code scalability.
aside from the info compiled into the exe, is essentially part of your coding environment, little to do with interpreted vs compiled.
VB indeed is an early learning curve, that was what is was designed for and part of much of it's success. Unfortunately, a lot of people with no formal training became 'programmers' (actually application builders), resulting in a lot of very poor coding practices.
I've used VB, it worked, I could have done it much better, but it did the job, and aside from having to work round some things it does not do well at all, in the main I got a useful deliverable out of the door in a very short space of time. Requiring less skill to build run of the mill apps, and faster throughput is a real selling point.
Personally I belive they could I have got fairly close to the productivity and ease of use and still improved VB technically, there was simply no commercial advantage in doing so, would have eaten in to Visual C's market then wouldn't it.
The reason I prefer compiled over interpreted is it gives me a much finer control on what the code does, but without a lot of training/education and experience, this is not something a novice can do.
My big concern over modern day practice is that the foundation techniques you would use to go down this route aren't required therefore not taught in interpreted environments.
Last but not least yes we can throw hardware at a problem, to cope with a situation where this, is, becomes impractical where do you go if you've no idea where to start though. OO itself is a massive overhead that's essentially paid for by improved development efficiency and currently acceptable hardware performance.
by johnnysacks
I remember them well...
Is the variable an Object?, an Integer?, a Variant? Is it Null, Empty, or Nothing? Heck, why even declare it, who cares about case sensitivity in the name?
How about arrays? Wow, remember 'Redim Preserve' (but don't add an initial size to the Dim statement!)
What a mess!
Where Microsoft really shined was in slapping a $1000 IDE on over this piece of crap so all sins were forgiven. Anyone with a pulse and the ability to read at 8th grade level was now an application developer...NOT!!!
Java, and C# finally imposed some order and consistency on the chaos, VB.NET thrown in to appease those who are basically untrainable. Coming up with the Visual Studio .NET IDE to learn C# and ASP.NET without forking over $$$$ was always my problem, not so with Visual Studio 6 which did not require activation and Java which was more command line friendly and soon had free IDE's available.
by apotheon
by wordworker
by apotheon
I addressed the original question more directly in some other posts in this discussion thread. I sometimes try to actually apply the DRY principle to what I'm doing, so don't expect every single post from me to say exactly the same thing. You might realize that this snap-judgment post of yours was inappropriate if you bothered to check out some of the rest of the thread.
I'm beginning to get the impression that you just like to disagree with me.
by jaqui
never die out, they are both mixed with assembler for systems programming in all operating systems maybe excepting solaris.
a few trillion man hours to get rid of them and completely re-write windows, linux, unix, irix, bsd, freebsd, openbsd and netbsd. don't see that happening any time soon.
by apotheon
by hal 9000
In this case I don't think that this person will be writing anything more than a couple of Macros which in my books is not programing that was and still should be clerical work! :)
I just find it unnerving to see Macro writers being called "Programmers" when they really are nothing more than glorified secretaries. :p
Col ]:)
by apotheon
Yes, I read that blog. I found it interesting that the "Hello World" example included in the Ruby 1.8.2 download (ruby/sample/hello.rb) is considerably more complex than the version you provided. Here's theirs:
class Hello
attr_reader :msg
def initialize
@msg = "Hello, World"
end
end
h = Hello.new
puts h.msg
print "Press RETURN"
$stdin.gets
Almost to illustrate my point (and oddly enough, yours as well), the author made this example way more complex than it needed to be in order to demonstrate the OOP features of the language.
by apotheon
On one hand, that's a terrible example of how to write a simple, single-purpose program. It gives people bad ideas about how to write code, and introduces bad habits.
On the other hand, it seems almost necessary to use a too-simple program purpose to illustrate more complex programming concepts to beginners. If tasks actually suited to the techniques being demonstrated were to be used in the example, rather than a Hello World, the rank newbie might get lost.
There's a lot of give and take in that example, in terms of suitability.
by apotheon
Of course, Back In The Day, with classic number-lined BASIC, you could make a Hello World in two lines. For a while, it would literally take a couple dozen lines with Visual Basic. Now, it's down to six.
This is progress . . . ?
by jaqui
if an application takes up more clock cycles.
to anyone with any pride in doing the job right.
relying on hardware to make up for software deficiencies is just showing both a lack of pride in your work, and pure laziness, you can't be bothered to write good code.
by hal 9000
But then again how many of the current crop of "Hot Shot" Programmers had to work with such limited hardware when they started?
I had to have a complete engine management program fit onto 1 64K EPROM running with a Z80 microprocessor and that had different maps for every 200 RPM's. Something like that couldn't be done today with the current crop of programmers.
Even the Banner Add on this page is after Java Programmers which to me is a Oxymoron. From what I've seen it isn't so much laziness but a total lack of understanding of how to do things as most of the current crop of so called programmers have the luxury of having hardware to is so fast that it will cover their errors without much notice to the general end user.
But even latter when the PC was on every desktop in Industry and DOS was the only OS available the secretaries where the ones writing Macros to get things done but that lot have all but disappeared and been replaced with Macro Writers who think of themselves as fully fledged programmers. Maybe I'm just [b]Jaded[/b] but to me these people are not programmers but nothing more than glorified secretaries who don't really know how to do their jobs properly.
A couple of years ago I was reliably informed that Boolean and all its derivatives where long dead and buried never to be seen in any form again so I asked how their Data or programs where stored on Digital Media. :D
Col ]:)
by apotheon
A better approach is to always keep in mind that premature optimization is a net loss.
That doesn't mean you shouldn't optimize -- just that you should optimize when it's appropriate, and not before. This maximizes programmer productivity without sacrificing good program design.
by jerome.koch
by apotheon
by mountwe
...again, in my opinion. You either put your money on who you think will win, or you wait to see who shakes out as the winner.
What I mean is Micro$oft languages and Java come at the same issue from opposite sides. Java strives for WORA (Write Once, Run Anywere). You write your code once and it runs on any platform for which a JVM exists. With .NET, you can program in almost any language you choose, but the program will only run on a Windows platform.
I can see advantage in both approaches. Personally, I think Java's approach is the better of the two. Meanwhile, Micro$soft is the 9,800 lb gorilla and you can't ignore it.
To specifically answer your question, I don't think you can isolate on one language. I would say become proficient in Java and a M$ language of your choice, C# perhaps.
by apotheon
by mountwe
I just did a 30-second google. Apparently IronPython is already available for .NET. Don't know if anything else is. I was only interested to see if SOMETHING was.
As for why learn a Microsoft language: I agree with your sentiment. However, I know I man who has a fairly high profile job at the Pentagon. He is boss of a team of programmers. He relates that when they are pitching a product, they will often mock up the user interface with VB. Once the customer signs off, they take screen shots and turn it over to "real" programmers to implement the ui. You'll probably argue that creating a VB form isn't really programming. If so, I couldn't argue with you. However, it would require at least modest familiarity with the VB to be able to do that job.
by ju1ce
by basubscribe
Sorry, but I beg to differ. I have programmed in C, Java and VB (1.0 through .NET). Although I agree the .Net changes are a most welcome improvement, to call VB a "toy" shows an arrogant attitude to one of the most widely used languages around. And all it takes is a bit of ingenuity to work around any of it's limitations, which are much less now with .Net.
To the original poster, my advice as to which language to use? I would suggest that you study all 3 (VB, C# and Java). Each has it's uses, and you while you have said you don't want to make a career of it, you never know when you may have to read code in either of these languages.
by brian.kiser
If you're not going to make a career out of the language, then it seems clear to me that you just want to get productive quickly and do some stuff for yourself. (Let me know if that's not the case.) With this assumption, you would not want to go C or Java, because nether are languages you can learn almost immediately and get productive right away. That leaves only your third language, VB.
Some will argue that Java can be learned quickly and easily, but I've done Java and it's not as easy as they say. Well, actually Java itself isn't bad, but J2EE (n-tier Java) is complicated. Not to mention Java is generally slow and not best suited for writing desktop executables (if that is what you're planning to do). VB is definitely your best choice here, imo.
by apotheon
If he's not looking to do it professionally, the J2EE argument holds no water. If speed is your issue, VB isn't an improvement.
I'd basically recommend anything but VB in this case. It's more useful to learn a language that actually helps to provide context for learning more languages, and that contributes to learning better programming practices, rather than the one that comes with the prettiest IDE.
Delphi's IDE is way prettier than VBs. Much better looking things on the pallette as well.
Your other points I whole heartedly agree with though. The compromisies required to make VB an easy language to learn, effectively lobotomise you as a programmer, without formal training in a well constructed language, all you really develop is a collection of bad habits. The things you learn first are the hardest things to unlearn.
by tobe-soft
I'm being unfair to myself. I've actually been programming for three years now, but been doing it as a skill, which is your goal. Here's my experience:
There?s going to be some times when you want to show off what you know to relatives and fellow employees, or do a project as a favor. My first choice is VB6 or VB.Net. It?s very easy to learn and using VBA (VB for MS Applications) provides an easy, cheap learning tool. VB6 is well documented and plenty of free support online. I?m in school for Software Engineering and I see the power of C++ and Java, but neither is as easy as VB-whatever or as well supported or provide rapid solutions to problems that just pop up.
However, Microsoft does frustrate you sometimes ? their online programming help for the novice is intimidating; when they go to the next version of their products, they dump all support for any older products; and they have to be forced by the industry (not the customers) to provide any cross-platform compatibility.
P.S. ? Java is very abstract. Unlike C++ and VB-whatever, I find I have to memorize instead of understand what?s going on. By the way, I read some of the posts, and what do people mean that Java is a scripting language? I?ve never heard it described that way.
by apotheon
1. I'm not a fan of VB. If you're going to learn a programming language, learn one that doesn't do everything "wrong". Worse yet, VB does everything [i]differently[/i] with each new version (as you kinda pointed out).
2. If you want rapid development and wide applicability for little issues that just "pop up", you should definitely be using something other than C, Java, and VB. Try Perl, Python, or Ruby instead.
3. Java is in no way a scripting language. The people who are making that comparison in this thread are the people who consider anything that doesn't compile to a binary executable to be a toy rather than a serious tool, regardless of any other characteristics it may possess. I have some serious issues with Java, but I like to think my problems with it are more objective and better thought out than that. Besides, Java is far too complex, cumbersome, and limited to be used for scripting.
by apotheon
I agree: it's better to learn all three than only one, all else being equal.
Of course, you should pick one to learn first. Then, having learned C (for instance), you may decide you're better off learning a well-constructed language rather than Visual Basic. There are enough good programming languages out there that it's generally a waste of time to learn the crappy languages. If you have to learn a .NET language, learn C# or IronPython instead.
by cklondon
evmafau:
This question is much the same as asking a carpenter which tools they prefer. We all have things we prefer, but sometimes have to use things we don't. I may enjoy using an air gun for pounding in nails, or I may prefer to do it the old-fashioned way.
Despite the rhetoric, no one language is better than the other, they are all just tools and you need to choose the one that gets you the best results for the job.
Since as a junior programmer, you won't likely be given a choice as to which language you will use, I agree with the post that recommended you find out what is hot in your area (or the area you want to live in... ;-) and pursue that. Once you get some experience, you will see that every language has positives and negatives, and then you can start investigating alternatives for each job.
A Ferrari is a great car for summer driving, but sucks in the snow, if you get my analogy.
NOTE: Don't get too personal about language preferences either, like anything in the IT field, they will come and go like the wind and if you start holding onto languages for nostalgic reasons, you may end up becoming obsolete. Keep learning new languages/things or find a different career field.
Good luck!
by tobe-soft
If you talk to business people about a language. They are interested in. Longevity, productivity, resourcing and cost. Talk to a programmer though they'll talk methodology, form, syntax and function.
All things that are meant to contribute to the things the business guys want. OO wasn't invented for coders to play with, it was invented to address issues in the business world.
As a developer, you should always be looking to the next version of your code, write it so you can't have a next version and have to rewrite from the ground up, doesn't make sense from any perspective. To have a next version you must use a good methodology, so style etc is the big picture.
by apotheon
There's one small problem with your post, but otherwise you make good sense.
The problem: "no one language is better than the other"
That's not exactly true. Different languages do have different strengths and weaknesses, and in general it's best to choose the language best suited to the job, and in general languages all have jobs for which they're well-suited.
Unfortunately, there are exceptions: some languages aren't well-suited for any job at all. Visual Basic is, unfortunately, one of those languages. You could make a case for it being well-suited to a given task once you start piling special-case modifiers on it (such as "it has to be a .NET language and can't require either braces or significant white space in the source code"), but without such arbitrary requirements it's at best probably a distant twentieth place when trying to choose the best language for a job.
by evmafau
... was 1) debate on the merrits of the different languagues (and I think that's been well accomplished) and 2)which would be easy to pick up.
As I said originally, I've done some basic stuff, but not enough that I can use it as a strong point on a CV, outside of saying that I've seen it.
I graduated half a year ago and my degree (B.S. in M.I.S.) looks nice on paper, but does not mention much about my knowledge in the field. I've been working as the I.T. department for a small company and am looking for my out because there isn't any room to grow in the I.T. field here. I thought having a language under my belt, at least a more thorough understanding and some rudimentary programs, would help me land the job that will get me on a path out of the help-desk and onto either a consulting or project management path.
The other wrinkle is that I have to be able to pick up the language on my own. Not a major problem, but I already have a little background in the mentioned languages so figured it'd be an easy place to start. That brings it back to which are actually useful in the industry.
I'm always willing to learn, but I need to get to the situation that is going to force me to learn with more guidance than I've got now.
by apotheon
With this new information about your preferences and needs:
If you're looking for a way to make money at project management, I recommend Java. If you want to consult, and be damned good at it in a general sense, you should learn everything to a basic level of competent understanding (this is the sort of thing I had to do as a consultant), and the quickest way to get there in programming is to learn an easy, fast, widely applicable scripting language such as Perl, Python, or Ruby first (possibly by way of PHP or Javascript if that appeals to you, but definitely learn something a little more substantial as well). Then, once you have a solid grounding in the basics of programming in general, start picking up some superficial understanding of the syntax of every language you can get your hands on, particularly including things like C/C++, Objective C, Object Pascal, C#, Java, Common Lisp or Scheme, Visual Basic (though you only need to know enough of it to be able to understand what it's doing and rewrite it in a different language, which is usually easier than extending VB anyway), and so on. For purposes of making money as a consultant, CLisp and Scheme are the least important, but for purposes of becoming a really excellent programmer they may be the most important, because of what such languages can teach you about programming.
Then, of course, there's the other sort of consultant: if you're interested in bilking the IT industry's equivalent of blue-haired little old ladies out of hundreds or thousands of dollars by selling them what they think they want, rather than what they really need, extensive knowledge of Visual Basic can be a goldmine. Writing asinine little plug-ins that do basically nothing other than create new whiz-bang clicky buttons for functionality someone's software already has can be quite lucrative, though I wouldn't personally stoop so low as to actually make a living that way myself. If you go that route, you should learn both VB and VBScript, both of which are useful for this sort of application macro writing.
by apotheon
by mountwe
by apotheon
by ju1ce
I have read through all the posts... What I find interesting, is the bias in all these people harbouring all this protection over languages they program in.
Sounds similar to how I was like back in 91 with Borland C and people trying to convince me C++ was better.
I remember how I was so against C++ because I felt I wasn't in control of my programming, and lacked the similar functionalities of C (although some required more steps in C, they allowed the control I required).
I never jumped into the C++ bandwagon because well, I went from Basic (Commodore), to C & Pascal, to Java to VB... and all the other fun inbetween's I tried and figured it was a waste of time.
The perceptions of VB astounds me, especially when people compare C# to VB as though it's way ahead of VB.. That's funny, even in Microsofts own words, VB comes out ahead in things, and C# comes out ahead in things. So when I see people sitting here balking at VB then, saying how C# is better..
I understand:
A) they have never utilized the language to it's fullest
B) they don't know it enough to make a sound judgement and like anything else in this industry they critisize what they do not know.
C) They were crappy programmers (and probably still are with their own languages of preference)
D) Simply have no idea what the hell they are talking about
These concepts are the same with any language, all have their up's and down's... VB .NET, C# .NET are not "amateur" languages as much as the person who's sitting between the chair and the keyboard.
I love misinformation and what I love more is people reaction's to how VB is a bane to the programming world.
No matter what language you program in.. Concepts are the same.. Syntax is syntax is syntax.. The type of language is all that differs.
I mean when I went from Borland C to Java.. It was syntax.. When I went from Java to VB it was merely syntax again, (with some differing concepts because of the programming design environment).
Could there be speed variances between languages? Well obviously.. But if we're going to go for optimal speed/memory consumption. We should all be programming in Assembler period.
Procedural (Progress 4GL), Event Driven (Less VB Nowadays) and OOP (More VB, C#, C++ or Java).
First things first original poster, choose the language you feel comfortable in and excel at it. Take the time to have some pride in your code... I have worked with Veterans like myself who started with C and went into GUI C++ or to other languages and they got worse as time progressed. They're code became convuluded etc...
I swear I'd be a millionaire if I got paid 10 cents per line of syntax I've fixed from supposed "C++" guru's in UNIX environment when I used to program in AIX environment.
It's a matter of personal preference if anything, people who knock .NET usually don't know much about the language (maybe used it for 6 months) which in any language.. we all know.. You don't become an expert in a language in six months.. It takes years.
Either of those 3 languages are great, just concentrate on the learning how to use best of logic processing instead of bloated code.
People don't seem to care about the little things that increase speed, so their "speed" suffers as much as they think it doesn't. Same goes with memory issues. This is the stuff that veteran programmers who are actual "experts" will tell you.
"Oh let the compiler and/or environment take care of removing the object from memory"
"Oh add another processor"
"Add more ram"
That's the kind of lazy programming you see today in most languages.
By the way.. If you want to go from a "mere" money perspective... Progress has some of the highest paying jobs out there (yet no one has really ever heard of the language, which it's also interpreted, again which is why it's high) They are far and few between yet.. It in over 70%-80% (go to their site to see for yourself) of the Fortune 500 companies.
by ju1ce
"It's easy to see why you don't think the syntax of a language makes any difference, since you favor Progress."
Favour Progress? No where did I say I favoured it other than mentioning that if you are going out for the mighty dollar it'd be the first place to start..
One of the reasons I switched jobs from my progress related job (prior to that C/Java).. Was because I disliked Progress.. One of the most aggravating languages (GUI) to deal with. Powerful.. Yes, (GUI is VERY slow.. it makes VB/C# look like ASSEMBLER in comparison).
"I've evaluated several different versions of Progress, and IMHO unless you really like SQL you aren't going to like Progress."
Several different versions? Several different versions of Progress do not exist unless you want to buy "legacy" versions but again that would be like here is .NET 2.0 and I'm going out to buy Visual Studio 5.. Now why would I do that?
That's your first problem. With each new version like any other language it gets better.. But I would compare the GUI "language" to like VB 1.0 (I don't know VB 1.0 so this here is an "assumption")
By the way.. Again, showing how people frown on things they do not know... Progress DB is an Embedded database, not an SQL derived database. They have varying differences.. One being.. It does not have "Primary Keys", "Relations are not defined like SQL", so Referential Integrity does not exist in Progress. Referential Integrity would be applied in things called "Triggers" but it's all manual.
Do I like Progress? No.. But as a realist.. I know if you are out for the mighty dollar.. That's where you'd go. Progress DB is a very powerful DB although.. The language sucks which is why they are even positioning programmers to move to .NET to communicate with the DB.
By the way? To this day.. my favourite language is and always will be.. The good old days of Borland C v3.1 for DOS... Ah.. I miss those days. :P
by apotheon
You clearly don't understand much about programming in general, and don't know the languages you've used nearly as much as you think you do, if you really think there's no difference between them aside from syntactic sugar. I have bad news for you: [b]some languages are better than others[/b] in (at least almost) every way. Near the bottom of the heap are languages like Visual Basic, VBScript, and PHP. Near the top are languages like Smalltalk, Common Lisp, and Scheme. In the middle there are a lot of languages whose characteristics can be compared favorably (or unfavorably) to each other depending on what you're trying to accomplish with them.
The top-end languages have a far more tenuous hold on their top-end placement: sometimes, C is a far better language for the job at hand than Smalltalk, Common Lisp, or Scheme, for instance. The bottom-end languages are pretty much universally sucky, though they get to fight amongst themselves for ranking within the bottom of the heap.
If you think programming languages are all created equal, I'd say you probably haven't ever had to deal with serious scientific number-crunching in several different languages, haven't had the benefit of Lisp-style linguistic macros at your fingertips (and known what to do with them), Haven't found yourself limited by Java's (non-)handling of pointers, haven't found yourself doing thirty times the work on a given project that you should have done because your language of choice didn't have garbage collection, didn't have a eureka moment in working with lexical variables, haven't compared the relative merits of multiple inheritance and mix-ins, and haven't discovered the joy of a powerful regular expression engine coupled with implicit variables in system administration.
Some languages can be compared and end up with a judgment that it's six of one or half a dozen of the other, with each being better for certain problem sets than the other. This is because each of them can do things the other cannot -- or, at least, can do them far more easily than the other. Unfortunately, that's not the case with Visual Basic now: it's just full of holes in its functionality in comparison with other languages. You can't really write device drivers in VB. The sort of macro-like functionality of it is far better achieved using other languages such as Ruby, Perl, and even Bash. Complex GUI applications are more effectively created with any object-oriented language from the C family, including C#. In short, VB is the redheaded stepchild of object oriented compiled languages. If all you see is a difference in syntactical details, you probably don't even know Visual Basic very well, let alone the languages to which you're comparing it.
One of the "gods" of programming had something interesting to say about the inequality of languages that you might do well to learn:
[i]Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp.[/i]
- Philip Greenspun
by jmgarvin
by bschaettle
I've found that a good Community College can offer some of the best hands-on programming training. You have the advantage of sitting in the room with the instructor and the possibility of getting to know the fellow students far better than if you "meet" them online. It can also be a great way to learn about the local job market.
I see that Broward Community College offers a C++ class. Check it out at
http://www.broward.edu/ext/Coursedetail.jsp?ccn=COP1334C&Name=COP
Hopefully you don't live too far from that campus....
My apologies for inferring a preference that didn't exist.
I evaluated different versions of Progress over the course of several years, starting with version 6.2. Yes, their DB is their strong point. It definitely gives Oracle and SQL Server a run for the money with features like the two-phase commit. My comment about SQL is because the language seems to me to be modeled on SQL syntax, which in many ways resembles COBOL, minus the data division (which was COBOL's really useful part). In fact, SQL statements can be executed against the Progress DB as part of the Progress language's syntax. If you're DB oriented, that's actually a nice feature. It looks like even .NET has jumped on that bandwagon by extending their languages to include SQL-like statements. But, as you mentioned, trying to code UI apps using that same type of syntax is rather clunky. Even computational logic is far less elegant using line-oriented commands. That's where my gripe with VB comes in. The UI designer is great, but when it comes to coding the logic, you have to fight the language more than you should.
by clgan333
VB surely is the one. Try VB.net, although the initial learning curve is steep but worth it. C is proficient for driver developer or low level handling.
There is some argument about the battle between Java and LAMP(Linux, Apache server, MYSQL database and PHP scripting combination), Java has become the loser in web designer battle.
by apotheon
by apotheon
You have a point. Luckily, that's not something I've ever had to do, so I've never really had to do any heavy lifting with Visual Basic.
I say again: ugh.
by paul_e_ray
learn a a language. With a reference manual and a vague idea of the purpose, you should be able to get the sense of any code.
Toy might be a bit harsh, but VB's popularity was based on how easy it was to achieve something from a standing start, not achieving it well.
Sort by Trending