Discussion Locked

C vs. Java vs. VB

0 helpful
251 replies
Closed to new repliesThis discussion is closed. It stays readable, but it takes no new replies.

I took some basic programming classes for C and Java in college and was starting to look at learning VB. I want to get proficient with programming where it is a skill that I have, but not neccessarily make a career out of it. Which language would be the best to focus on? Any suggestions as far as books so I can teach myself?

Thanks

251 replies

by stargazerr

have their own place in the programming world ... but learning Java is the best I think ...

Since OOPS is the way, the world is moving and since .Net .. (gaining a lot of popularity) works on the same rules as Java ..

Thing to remember is ... Java branches into J2SE (Java 2 standard Edition or what some people call Core Java), J2EE (Java 2 Enterprise Edition, includes EJB, Java Beans, RMI, Servlets) and J2ME (Java 2 Mobile Edition, programming for WAP). These three cover almost all aspects of programming.

Good Luck

]:)

by apotheon

Java is certainly the language that, as a skill, will provide the most opportunity to work for pointy-haired bosses. Java is a career decision, though, not a decision based on a genuine interest in programming. Java's real strength as a language is in its ability to allow large numbers of mediocre programmers to work on a project over a period of months or years without screwing up the codebase too badly.

Object oriented programming is indeed "the way", according to the common "wisdom", it's not the be-all and end-all of programming. If you really want to know what you're doing and make good decisions about what sort of programming you need to do for a given task, you're better off learning a lot more than just OOP. Functional programming, for instance, is similarly valuable, and perhaps even more valuable than either is Lisp-style macros -- though such knowledge is unlikely to get you a job in and of itself, it will help to provide a more complete understanding of the subject matter.

I'm afraid I have to disagree with the suggestion that learning multiple styles of writing Java code covers "almost all aspects of programming." In fact, it covers very little, and I get the impression that you probably haven't much experience with programming outside the Java sphere of practice. Little things like symbols or macros can make all the difference in the world when you're trying to produce truly excellent code, though most Java programmers probably have no idea why, or even that such things exist in programming languages.

by stargazerr

OOP is "the way" people move ... not necessarily the way everyone should move ...

Java can handle many of the real world problems but every language has its own area of expertise .. One should learn the programming language(s) that suit one's need best .. The guy asked for a choice between VB, C and Java .. so I gave him one

]:)

by jmgarvin

VB rides the short bus. While it has its uses, it just doesn't have the power to do much other than simple scripting.

C++, C#, and Java are object oriented languages (you'll see OOP a lot...Object Oriented Programming). C++ is probably easier to understand and easier to pick up if you know C. Java is nice, but it can be confusing with all the little pieces that can break off and choke small children. C# is the java-alike from MS. I prefer C# to Java in some ways, and want to destroy C# and all in stands for in others. While the networking and UI development for C# is pretty well done, it has wonky issues that make me question if MS forgot to add some things.

All in all, you want to pick up an OOP. C++ is probably the best starting point and moving on from there shouldn't be too hard.

Good luck!

by jaqui

Pick the language that has the highest demand where you are living, or is growing in demand.

you will learn programming no matter what language you learn.

as much as I detest the idea I need to learn java to get more contracts around here, my c and c++ skills are useless, they want java and .net framework [ usually asp.net ]

java being a piss poor excuse for a programming language, as all languages that are interpreted, it is meant for simple scripting only.

by sterling "chip" camden

I'd have to disagree with the characterization of Java as a "piss poor excuse for a programming language". It really is quite powerful in many ways, although I detest it in others. If I could pick the language to work with for any serious development effort, here would be my order of preference:

1. C#
2. C++
3. Synergy/DE (http://www.synergex.com for those of you who have never heard of it)
4. Java
5. Delphi
6. VB.NET

If I had to drop down to VB 6.0 I might have to slit my wrists, although I can endure it for small projects.

by lemondrop

I took many classes that talked about OOP but it wasn't until I took a class in Java Programming that it all made sense at long last. The concepts that I had only memorized in the other classes, finally made sense to me when I had to create programs for assignments. It helped to have the object oriented classes first. I plan to take more Java classes and get certified.

by tony hopkinson

only important in terms of marketability. If you want to learn programming neither Java nor VB would be the best choice. Personally I'd plump for Pascal, over C, though the latter might be a better choice in terms of progression through to C#, C++ and Java as they are all C based. The real point is learning any language is something you do to apply what you know about programming, not the other way round.
Book wise, look for Brian Kernigan, he's wrote a book on just about everything in programming and he's damn good at it.

PS, the only language I've been taught formally is Pascal. Commercially I've used well over twenty if you include scripting environments.
All language choice is, is an initial constraint/enabler on what and for what you have to do.

Do while condition and While condition Do, who cares?
While Do or Repeat Until, now that matters.

by m_a_r_k

While I agree that learning Pascal is a good intro into programming, you're not going to get any jobs from that. In choosing between C, C++, C#, Java or VB.NET, I'd go with either C#, C++ or Java. C# and Java are basically super-C++ languages. C# has some wierd quirks but it's a good language and becoming quite popular. C++ is probably your best jumping off point. If you know C++ you easily pick up C# or Java, but not necessarily the other way around. If you know C++ you can also easily pick up C (basically same language except is object-oriented). C is still used a lot but you'll find that companies' job ad require C++, but the real job actually is C programming. Go figure. I wouldn't even consider VB.NET. C# does everything and more that VB.NET can do and more with many advantages, not the least of which is data type-checking.

by tony hopkinson

as will Fortran or even Cobol. Not many as a windows event model OO programmer though I'll admit. LOL

My contention that Pascal is the best language to learn programming in though, is that it's the best of it's generation. If I wanted to be really picky, I'd say you should start with machine code, like I did as all the other languages were built off it, but that would make me some sort of sadist.
I'm soon to move to C# from Delphi which I'm doing now. From what I've heard, I should enjoy it as it addresses some of the massive shortfalls in C++. Java, I would n't even consider as a learning language, in my oppinion you should alreday know programming and OO before you go near it, otherwise you'll never use it to it's best advantage, most of which in my oppinion are massively overstated.

VB, well the less said about that the better, VB.Net is meant to be an improvement, but improving VB as a language and particularly as a development environment isn't a hard thing to do seeing as VB stands for Very Bad. I was forced into using that for two years and you'd have to offer me a LOT of money to go back to it.

by bschaettle

I learned VB years ago and still love it. It's been extremely valuable as one of many items in my intellectual "toolbox" but you just can't make a living with it. Unfortunately it gained a reputation as a "toy" language years ago when it was interpreted, not compiled like C or C++. Now, even though VB.NET is compiled, that reputation still follows the language and VB developer salaries are still substantially less than what you can make programming with C or C++.

by tony hopkinson

carting around vbrun.dll was definitely a problem.
implicit object creation, being object based not object oriented, massive reliance on variants, daft syntax variations, absolutely pathetic compiler.
It was very good at producing a professional looking application in a short space of time as long as it was neither too demanding or too complex though.

Did it for two years, it's the worst language/environment choice I've ever seen.

by sterling "chip" camden

VB is a toy language. It was conceived with the idea of visual rapid development, but as a consequence suffered from lack of foresight regarding complex development. The syntax does not extend itself well at all, although I must admit that VB.NET is a big improvement. I still find C# 10 times better, though. I've programmed many projects in VB since version 2.0 thru VB.NET, and I can't say that during any of them I didn't wish I was using a more powerful language.

by jmgarvin

VB wants to be an object oriented language, but can't quite make it. It wants to be a rapid development platform, but it isn't powerful enough to actually create anything.

While it is fine for scripting little widgets for Access, it has no place in being considered with real programming languages.

by jzajac2

I think the javaRuntimeEnv is the hottest thing around. I picked up a book called "Ground Up Java" and then "The Art of Java" and I enjoyed them. It seems as if you just want to have the credentials of a programmer but not have to debug programs 9 hrs a day for lucre. You can match your career prospects with a suitable language to an extent. But for each program you write, some languages are much more suitable than others.(e.g. I wouldn't write a WP program in FORTRAN, nor would I write a program that needs constant updating in LibertyBASIC or any other structured programming language.

by jzajac2

I think the javaRuntimeEnv is the hottest thing around. I picked up a book called "Ground Up Java" and then "The Art of Java" and I enjoyed them. It seems as if you just want to have the credentials of a programmer but not have to debug programs 9 hrs a day for lucre. You can match your career prospects with a suitable language to an extent. But for each program you write, some languages are much more suitable than others.(e.g. I wouldn't write a WP program in FORTRAN, nor would I write a program that needs constant updating in LibertyBASIC or any other structured programming language.

by jzajac2

I think the javaRuntimeEnv is the hottest thing around. I picked up a book called "Ground Up Java" and then "The Art of Java" and I enjoyed them. It seems as if you just want to have the credentials of a programmer but not have to debug programs 9 hrs a day for lucre. You can match your career prospects with a suitable language to an extent. But for each program you write, some languages are much more suitable than others.(e.g. I wouldn't write a WP program in FORTRAN, nor would I write a program that needs constant updating in LibertyBASIC or any other structured programming language.

by jeubeda

Considering you are an IT Dept. manager, I suppose that architecture becomes more important. From this point of view, there are two main choices: .NET or Java. Given that, Java have a clean use of OOP, and have platform independence. If you will require be flexible and opened building solutions, Java will give you more options. About education, you will get good stuff, starting at the official Sun site:http://java.sun.com/learning/index.html
or from Bruce Eckel?s site: http://mindview.net ,between many others...

by realvdude

If your looking for a marketable skill set, then I'd still bet on Java, C++, then VB. If you are planning on going into a certain field, such as industrial automation, then you are going to want to look at what that industries tools are. You may want to learn PIC, ADA or a 4GL language.

I've been happily employed for 18 years using basic, from MS Basic 3.0 to VB6.0 and have never run into a situation that I could not handle with a third party library or ActiveX control or a custom library.
There is allot of VB misconception here, along with some truth. First and foremost, VB was meant for the development GUI based applications by people who are not fulltime programmers. That is, an accountant, manager, etc can quickly pick up VB to develop applications they need. Yes, VB has a runtime that has to be deployed with it, but C has it own, at least in the MS deployment. There are plenty of other languages that need a deployed environment as well.
I'd argue with anyone that says VB is primarily for scripting, although knowing VB opens up several MS scripting platforms to you; such as VBscript, which I use in conjuction with custom VB libraries in web applications development.

Lastly, don't forget that a language is merely a means to express an idea, so learning to design a application is at least as important as learning to code it well into a program.

P.S. My skillset includes ASP,SQL,Java,HTML and some C++,assembly,Fortran and xBase (FoxPro,Clipper,dBase).

by jaqui

anyone who says vb is meant for scripting?
that is exactly what all scripted [ non compiled ] languages are.

java is a scripting language also, as is perl, python....
nothing wrong with scipting languages, just don't use a scripting language to code a complete program in, you do not get the performance required out of scripted languages.

by tony hopkinson

without the extremely naff friends approach which busts encapsulation an OO cornerstone to bits it you can;t do anything really clever with it.
Very few have the luxury of doing pure OO, the design implmentation trade off coupled with potential code re-use makes it impractical, but proper use of scoping would have made it far better. Unless you need it's theoretical ability to be cross-platform through the JVM there are far better choices for OO. Syntax wise Java gives you less options than other languages, I know it doesn't always go down well but OO is not always the best solution.

by apotheon

Java is a far more complete and consistent application of OO principles to a programming language than C++, but it still falls well short of being the true OO language Sun claims it is. Python and Objective-C approach far, far nearer that goal than Java, while both Ruby and Smalltalk actually hit that goal. If you want real OOP all the time, use Ruby or Smalltalk.

Even Object Pascal gets closer to true OOP than Java, in some ways.

by jean-simon.s.larochelle

In your initial message you mention that you do not necessarilly want to make a career at programming. Although I professionally program in Java and C++ I suggest that you learn Delphi (from Borland). With a copy of Delphi 2005 you will be able to compile your Delphi code as a win32 executable or without changing a line of code compile for the .NET platform.
Should you decide to go in business you will be very productive with the Delphi environment and your business will prosper.

by sterling "chip" camden

I liked Delphi a lot, especially back in the version 2 days (ca 1995) when VB REALLY sucked and writing Windows apps in C++ was like constructing a Saturn V out of toothpicks. Delphi provided both OO and visual programming, and came with a lot of powerful tools for that time.

I still like Delphi, apart from the aggravating syntax differences of Pascal (:= for assignment, having to omit the semicolon before else, etc.), but I guess that whatever you get used to is what you use to measure the aggravation level of everything else. One of my first languages was Algol, which is very similar to Pascal, but that's been so long ago that I am thoroughly C-oriented when it comes to syntax now. I still have some projects in Delphi 5 that require work from time to time, and switching back and forth can be particularly trying.

Delphi does not seem to have gained the market acceptance here in the US that it still has in the UK. If you're looking to be marketable in the US, I wouldn't put all my eggs in that basket.

by dfirefire

I use Delphi to program small things, like stand-alone programs for small businesses. It's fast, easy and well structured. That there are differences in syntax is quite normal, most of us get a little spoilt with the ubiquitus C syntax, more or less prominently present in C++, Java, PHP, ...
Java is my choice for decent programming, as it is free to some degree, and the web is full of resources.
I didn't jump on the M$ .NET train, my idea of it is that M$ has done as usual: steal some good ideas, improve some weak spots, add features and shove it down our throats on the back of its OS (for the record: an operating system is an abstraction layer between the physical layer and the programs, not a marketing/monopoly tool! Remember windows, ICQ vs messenger, IE vs netscape, .NET/C# vs Java, ...)
Sure .NET will give you plenty of jobs, as the MS monopoly is all around... but I myself tend to row away from the major stream...

by jslarochelle

I agree that Delphi has a few syntax quirks and is assymetric in a few area. However, I still think that it is a good choice. Why it has not had more success is a mystery to me. The ability to compile the same code to a WIN32 executable or .NET bytecode is an asset that programmers should not neglect. You will not have any problem writting high performance GUI intensive application with Delphi (the WIN32 compiler is very good). The same cannot be said of Java or C#.
(remember I do most of my programming in Java because this is collective choice where I work). This ability of Delphi makes it a specially good choice for those considering C++ for performance reasons. C++ is a powerfull language but it is also a very complex language. Every day I see experienced programmers struggling with it. Delphi will get you in the same ballpark in terms of performance with much less complications.
I think some people are afraid to go for Delphi because it is a propriatary language. I would not be afraid of that because Borland has been around and will be around for quite a while I think. Borland has also shown loyalty to its users by keeping the Delphi language quite compatible from one version to the next.
I must also say that I agree with other people in this discussion that whatever language you use fundamental OOP techniques will be a key part of your success. Make sure you master the OOP concepts.

by evmafau

I appreciate all the suggestions about the different languages. It appears that most agree on some derivation of C.

I'm in a situation right now where I don't have anyone to work with or guide me through the language (it's a small company without any need for programming solutions). What are some good resources so I can teach myself the language? I have a copy of Visual Studio .NET 2003; will that suffice as a development tool for C(++ or #) or do I need to purchase some other software?

Thanks again

by apotheon

The response from sterling is absolutely correct: Visual Studio .NET will work fine for working with C# or C++. Also, C# is likely the easier route to take, of those two options. You don't need to buy any additional software, either.

On the downside, C# and the Visual Studio IDE is the path to vendor lock-in, so if you ever want to free yoursel of that you'll have to look into other ways to do programming. I, personally, don't have any interest in learning C# beyond some bare essentials that give me an idea of how the language is put together, because any code I write these days is meant to be cross-platform or to run on unix variants only. In fact, aside from web programming, I don't think I've even written cross-platform code, ever -- crap like Hello World programs notwithstanding.

If you want to see some discussion of what makes for good programming, have a look at my next Soapbox article when it gets posted. I'm doing some final edits on it this morning (I wrote it last night), though it'll be a few days before it's available online, I think.

If you're willing to try learning a language on your own, without going to classes for it, I recommend Ruby instead of any of the languages you've mentioned. The "interpreter" for it is free, there are a number of IDEs available for it, it's simple enough so that all you really need to work on it is a text editor, and it may well be the easiest-to-learn OOP language ever. Really.

by jaqui

other scripting language in some applications.
there are a number of 3d modelling and animation applications that have developed a python library for thier scripting.
no other scripting language, that is cross platform, and is freely available, has such a library.
[ Maya's mel scripting is not freely available for use with other applications ;) ]

Perl was designed from day one for working with strings, naturally it's going to be excellent at it. :P I still wouldn't design an application that wasn't 90+% working with strings in perl, as the interpreter is a choke point.

by jmgarvin

I find the immutable types are very frustrating and quite odd. I don't understand why the Python goes against convention in this respect (immutable strings are quite odd and are a PITA that shouldn't be)

I do like the libraries available for Python, but Perl also has has HUGE repository.

I also agree that I wouldn't use Perl (or Python) for everything...that interpreter is a bear. Sure it's great for parsing logs, but would you use it to create a database? Na....

by oz_media

Well done, Jaqui, with the python plug. Some people just don't get it unless everyone else is already doing it, thus paying a much lower wage for the knowledge too. Followers, sheep and not leaders, pioneers.

by apotheon

I've run across mentions of graphics and/or video libraries in Ruby that may be comparable to Python's. You may have to revise your statements.

Re: Perl and strings
As far as Perl is concerned, every single bit of data on the hard drive is a string. You can patch your kernel by simply populating a scalar variable with bytes read from the hard drive, operating on them with a regular expression, and writing the new string of bytes back into place, if you're feeling really brave. I wouldn't recommend it, but it's entirely within Perl's capabilities.

by gralfus

I seem to recall Steve Gibson of grc.com was an assembler fan, and seems to produce some very small and powerful applications. I haven't used assembler for over a decade.

by kaceyr

And contrary to popular belief, Microsoft MASM is not dead. MASM 7 ships with Visual Studio 2003. It's used to compile .Net assemblies to native machine code.

By the way, Steve Gibson still uses assembler, and he's **REALLY** good at it!

by tony hopkinson

Maybe a bit of optimisation with inline assembly in Delphi, other than that not since 8 bit. Good reason for that of course, it's way too expensive, except for something that can't be done with anything else. It's cheaper to throw hardware at a problem in business level code than it is to use assembler to get the best out of what you have. I learnt programming (well sort of anyway) with 8 bit m/c, sometimes I think about going back to it for a laugh then I remember it wasn't all that funny.

by jaqui

since I don't do .net programming, as it is not supported on unix operating systems, the c# is useless to me.
java is not supported by default in unix systems.
delphi and vb.net are again, only supported by one os, so are useless waste of time.

with 6 different java vitrual machines, each supporting the java language differently, working with java for unix operating systems is the stupidest language choice you can make, as the odds of the correct virtual machine being there are minimal.

by jaqui

have thier place..for scripting macros, not for software development.
that's where a scripting language shines.
a compiled language will always beat a scripting language in performance for software development.
[ performance in speed of software function, not in development ] :)

by kaceyr

Most of the posters in this discussion appear to be quite the C family bigots.

Don't get me wrong, that's perfectly fine by me. Especially when I have, at this moment, eight active clients who *insist* on VB.Net for their systems. I thank you all for your egomaniacal bigotry. It serves me well and puts a bunch of bucks in my wallet!

The assertion that VB is a toy language or is incapable of being used for enterprise applications simply demonstrates how little you know about VB.

As for scripting languages, they also have their place in the enterprise. Network management tasks are often implemented with scripts in whatever language suits the developers purpose.

Personally, I create applications in VB6, VB.Net, C#, C++ (less and less), Delphi (only 1 stuck with it), VBScript (yup, interpreted applications in a networked environment), Perl, Java (not very much), COBOL (a lot more than you'd think), Natural, BAL, and x86 assembler. In a nutshell, the client picks the language and the platform. They occasionally ask me for a recommendation, but I tend to already know which way they're slanted.

So please, continue your egomaniacal rants and pseudo "upscale" snootyness. At least until I retire. :)

by jaqui

create an enterprise app in vb that runs on any unix box.
with no wine, no crossover office.
native on unix.

can't do it can you?
since vb is os specific it is a toy language.

by kaceyr

Mono.

Since you're such a Unix beastie you should be well versed in the fact the Mono is an open source *nix implementation of a Common Language Runtime (CLR) that allows any programming language that compiles against the ECMA standard Common Language Infrastructure (Standard ECMA-335 June 2005) to run with no more than a recompile on the target system (just like Java, only more efficient).

This means that I can, very easily, code VB, C#, IlAsm (Intermediate Language Assembly) on my Windows box, then compile it to an on a *nix box, deploy the resultant assembly, and it will run just fine. As a matter of fact, I've already done just that using Debian.

Or do you also intend to classify Java as a toy language? If you take away it's runtime, it doesn't run either. In fact, if your true requirement is the native OS, you're limiting yourself to assembler only, because even C has the standard library, and the standard library implementation is hardware dependent (if I want to code C for Intel, my standard library must emit Intel opcodes, if I want to code C for Motorola, my standard library must emit Motorola opcodes).

A final FYI: The only reason VB doesn't run, out of the box, on *nix systems is because *nix isn't a Microsoft target operating system. If Microsoft had intended to have VB deploy on *nix, they're *MORE* than capable of doing so.

by oz_media

Gee, isn't that exactly what you post is?

Talk about a propeller-head who is having his day, man this must be like Christmas to you, you FINALLY get to sound cool!

But you missed Python, you may want to take up reading up on code again and realize where the most money or the least work is.

by kaceyr

Of course it's an egomaniacal rant.

This discussion started as a question about language choice for hobbyist programming and degenerated into Unix flag waving and Microsoft bashing.

As for sounding cool? Never in the cards. Once a nerd, always a nerd and remember, a propeller-head is a nerd elite (so thanks for the compliment).

As for Python, as soon as I have potential clients in my area (the Pacific Northwest of the USA) who are gung-ho for Python, I'll take the time to learn it. Until then, IBM big iron and Microsoft servers/workstations with an occasional smattering of Unisys pays the bills quite nicely, thank you.

by tony hopkinson

Incapable ?. Well it is capable of enterprise complex resource critical applications in the same way as Access is capable of being an enterprise database. Lot's of people recommend that as well.

A competent programmer can get something useful out of it, as long as they understand it's severe limitations, but learning with it just makes an incompetent programmer as far as I'm concerned, particularly OO. This is pre .NET by the way.

Rant continued as requested, in fact here's a

P.S. I've wrote some very capable VB programs when requested. I just know I could have done them much better in a better environment, and given the increase in utilty, performance, longevity nd code re-use, they would have a significantly better ROI. To me VB is a realisation of the shortsighted, it'll do mentality that's crept into IT, since the boom.

by kaceyr

Pardon my ignorance on this one, but what is a tipple?
--
I would say that VB6 is much more capable of producing enterprise complex resource critical applications than Access, but they key here is the "resource critical". You've hit the VB6 weakness right on the head, even very carefully written VB6 will be a greater resource hog than a very carefully written C++ system.

Having said that, VB.Net is a significant improvement in the resource utilization. In fact, VB.Net and C# are right on par with each other in resource utilization. Of course, you can still shoot yourself in the foot with either language, but that's where the understanding of language and environment limitations comes in.

by apotheon

The harsh truth about VB is this:
It used to be a "toy" language. It has definitely progressed past that point, now, with years of Microsoft wrangling. It has become a very capable language, complete with OOP and binary file compilation capabilities. Unfortunately, it's a [b]really awful[/b] non-toy language. As much as I dislike Java, I'd take that over VB any day of the week. VB is misbegotten, cumbersome, and generally very poorly implemented. All of its more useful features have a very tacked-on feel to them, its implementations over the years have had all the efficiency of fishnet stockings as a way to store tomato soup, and its semantic structure is about as robust as Jesse Ventura's understanding of US foreign policy.

Still, that doesn't change the fact that VB isn't the "toy" language it once was. For that matter, I'd say Java was more of a "toy" language than VB these days, though not by much.

One thing at which VB truly excels is making money without having to do any real work, though. The reason for that is simple, and best articulated by PT Barnum: There's a sucker born every minute.

by sterling "chip" camden

You're absolutely right, apotheon. MS has extended VB (with VB.NET) to the point where it is capable of just about any project, but the core problem is the language itself. The obtuse, line-oriented syntax will never be able to realize the extensibility, power and elegance of languages that can claim Kernigan and Ritchie as their forefathers. Because of that, it encourages bad design. Or more specifically, lack of design.

by realvdude

You seem to be paying (and have paid) a lot of attention to something you seem to have know use for. Tacked on useful features, I'd to hear more of your thoughts on that, like specifics.

by kaceyr

... in that VB is no longer the "toy" (learning, actually) language that it used to be. It's now quite "grown up".

I disagree with your statement that it's a really awful non-toy language. In my opinion it's a quite capable non-toy language (especially the .Net version).

I'm inclined to think that you may not know VB as well as you think you do. I'd like to know how it's "cumberson", or "poorly implemented", and especially how it's "misbegotten".

by oz_media

More money in programming, MUCH easier to program, open source, module based, PIECE OF CAKE and yet much more secure than other languages.

Debugging takes minutes instead of days/weeks, what you can fit in to 20 lines of Python will take several hundred/thousand lines of code in another language.

python.org

by sleepin'dawg

but I still do a bit of coding to sort of keep my hand in. I started on COBOL but had to learn FORTRAN soon after. That made learning C easy to pick up. If I were starting out from scratch today I think I'd want to learn the C family and anything else that was cross platform compliant. I think both PERL and Python fall into that category but the main thing is to look at what your market is demanding and work from there. Oh yeah, learn to tolerate Windoze and the weenies who drive it but try to find and work in a Unix/Linux environment. You'll have fewer headaches at the end of the day.

[b]Dawg[/b] ]:)

by oz_media

C is just a very complicated and over redundant Python waiting for code errors.

If you know C, then you simply forget half of your work and code in Python. Python would, in simplest terms, be a shorthand C. Fewer lines for the same result, fewer errors, easy to debug and yet you can charge mroe than with C.

As far as what the industry demands, what happened Dawg? It should be what you bring to the industry, not what the industry THINKS it needs.
Most of the people making such decisions (not IT departments but owners) are easily shown a better/more secure and cost effective way, whereas the IT department may be full of C junkies that swear they know best(much like when a company hires a CNE and is told that MS is the best solution).

I rpefer to make my own rules, and I know you do too.

by apotheon

You need to qualify your use of the term "other languages". Rather than just referring to Python, I'd have made this point with sort of a family of high-level dynamic languages, including Perl, Ruby, and the various Lisp dialects. In fact, you can usually get faster development and less lines of code with any of these than with Python, though not by bloody much.

Ultimately, in fact, Ruby pretty much does everything better than Python except for these three things:

1. The Python parser runs slightly faster than the Ruby parser, at present, though that's likely to change in the near future.

2. You can more easily find Python jobs than Ruby jobs, though that's almost certain to change very soon: already Ruby book sales are greater than Python book sales in the US.

3. Python is better at limiting the programmer. Some people call that a "feature". I call it a "bug".

Basically everything else is better in Ruby, including learning it quickly, doing rapid development, producing maintainable code, doing OOP, and so on. Hell, even the Ruby community is more friendly and helpful than the Python community.

by oz_media

Many Canadian banks use Python for their PKI's, for the programmer; talk about an instant pay raise for very little work! In fact a lot LESS work than before.

by realvdude

... between VBscript and VB6 or VBA. The latter 2 can be used for creating windows libraries, ActiveX objects and executables. VBA can be used to create addons for MS Office products.

by jaqui

can only work for one os, then they are not worth using.

program in languages that are cross platform, or don't concider yourself a fully qualified programmer.

as soon as ms makes thier visual basic work on every single os, I'll concider looking at it.

by apotheon

One could create system libraries using Java or COBOL, too. Hell, you could even create system libraries using Whitespace or Brainfuck, if you were feeling really masochistic. Just like writing system libraries in VB, though, I'd advocate shooting the idiot that did so, though -- especially if someone wanted me to maintain the code later.

VisualBasic is, in and of itself, a truly heinous language. I have some distaste for Java, which successfully combines all the best features of some very good languages in a really awful, broken manner that ultimately gives one a universally mediocre programming language, but it doesn't even begin to compare to the botched abortion which is Visual Basic. VB actively hinders the creation of good code, in addition to which it is restricted to extremely limited deployment and exhibits all the runtim speed of a one-legged dog.

Browser-dependent applications written in Java regularly outperform compiled executables with equivalent functionlity that have been written in VB. There's no excuse for that.

by m_a_r_k

There aren't many development jobs where you're allowed the luxury of starting from scratch and choosing your own language and development tools. Most programming jobs are maintenance, enhancements and feature additions to existing code. You have to use whatever programming language the legacy application is using. And a lot of jobs involve taking an existing program and porting to another system. It is quicker to use the same baseline code and tweak it to fit the new platform. I know that sometimes it is like sticking a round peg in a square hole, but management wants stuff done the fastest way, not the best way. Sure, you may be able to hack in some C++ code for a C application but that complicates matters even more.

by oz_media

You can simply call a python module, rewritten with your updated code.

Python is also a LOT easier to recode, update and append than C++, is a LOT easier to debug and takes a fraction of the time to script from scratch. IN many cases, if you were toput th eodds p on the board, the boss would opt for a complete rewrite in Python over an append in C.

by jaqui

since the entire NT family [ NT, 2K, XP, Vista ] of ms operating systems are supposed to have full compatability with ALL operating systems, and has compatability with none, I would say thier own products put the lie to them being capable of doing anything to work with unix, or any operating system they have not corrupted.

by realvdude

What do you mean by All OS compatibility? I've worked in MS OS environments for 17+ years and have never heard that claim from MS.

by jaqui

networking version of windows, that was original marketing of it.
designed to talk natively with all operating systems was the claims..while it was under development.

by kaceyr

Please do explain this mysterious claim of "full compatability with ALL operating systems". I've certainly never heard anything anywhere near that claim from Microsoft, ever. And I've been using Microsoft OS's and software since the original IBM PC came out in 1981.

by tony hopkinson

definitely a good idea. It can take a while for the penny to drop, particularly coming from standard procedural. Delphi and I'm told C# are much better OOP environments though. Given you've got OO under your belt C# should be a breeze. It's the programmimg concepts you need though, after that the only difficulty is how you do it in that language. And as I've said many times Java is a terrible choice to learn basic programming in, it's too abstract for many of the basics for what is a very high level interpreted language.

by jslarochelle

Tony,

Although I agree fundamentally with the argument in your message (OO before specific language) I have to say that if someone can learn C# that person should be able to learn Java just as easily. They are very similar language.
When it comes to the libraries that might be another story because Java comes with a lot of libraries. However, this is a strength of Java not a weakness.

by tony hopkinson

C# is a much better OO environment and a much better choice to start in.

Which is why I say you should go for C# first, that way you'll know when you are being forced to use a nasty hack because you can't achieve your objective any other way.

by tony hopkinson

Like 24/7 manuafacturing. Delphi's only problem was that as good as it was it's take up was never going to compete with the automatic take up driven by MS's marketing machine for VB. It beat VB in every department except marketing, until MS poached Borland's tools boys it did the same to Visual C++. Right tech, wrong time and place.

In the UK you can still get Delphi jobs, but developers are getting scarcer, so employers including my own are looking to move away for it on a resource basis. C#, here we come. Everything I've seen on C# suggests that it's a C based derivative of the Delphi environment though. None of that multiple inheritance crap for instance.

by jck

Delphi is not a toy.

My newest co-worker worked for years in the west of England and his former employer used some custom Delphi apps developed in-house which handled multi-billion dollar operations.

Delphi was a better GUI development environment back in the early 90s than VB or C from Microsoft. Even Gupta SQLWindows was better til VB4 came out.

Haven't seen Delphi in 10 years now. Hopefully, they've kept up with MS.

I wonder if they (Delphi) make an *nix GUI development interface...does anyone know?

by jaqui

Borland, the creators of Delphi had[ve] Kylix, the c++ and Delphi development tools ported to linux.

The reason it's did not do.. latest version of Kylix [ kylix3 ] requires the toolchain of the 2.4 series of kernels, any 2.6 kernel based box it won't even install on. and the 2.8 series should be starting this spring so kylix is way out of date for being usefull.

by dfirefire

In answer to your question, jck, it IS possible to develop cross-platform with Delphi. There is a subset of controls you can use called Kylix, that are cross-platform, so linux programs can be written with it. Haven't tried it though, and neither do I know if this applies to all unix platforms.
For the recent status of Delphi, look at the Borland website. I've stuck to to v7, heard that Delphi is .NET-capable nowadays... so it seems like they've kept up with M$!

by jck

*nix programmer - C/C++
Windows Programmer - C# .NET or IL
AS/400 - whatever your employer uses (C/RPG/COBOL)

If you're gonna do any web, add in some scripting language.

Eventually, I see Microsoft's strategy to meld all the programming environments into one. They've been trying to do this since the mid-90s and their Visual 5 line. I see C#.NET being around for the longest of the current individual languages, and eventually being melded into some enhanced form of IL, which will become their single defacto programming standard in about 5-7 years.

by apotheon

Perl programs regularly outperform Java programs. In fact, it's difficult to find anything that really makes Perl look slow without looking at stuff like C/C++ and comparable-performance languages. Furthermore, there are projects in progress right now to produce optimizing Perl compilers in the C tradition. Don't count the language out yet.

In any case, serious applications can most definitely be written in supposedly "interpreted" languages. For one thing, Perl isn't exactly an interpreted language, strictly speaking: Bash and Tcl are "real" interpreted languages, while Perl actually goes through a parse tree compilation at runtime, making it exceedingly fast to run for something that exists only in source code form before you say "go". In fact, just about the only way to make something faster without having it in executable binary form (like compiled C) is to store it already in parse-tree form (like Lisp source code). The reason Java is such a dog isn't that it isn't binary-compiled, but that its bytecode compilation requires a slow-ass VM and it uses bytecode rather than parse tree compilation.

Python's pretty quick at a very limited range of things. Ruby's implementations are, sadly, not the fastest things on earth, but they do well enough for most uses.

Serious applications can be (and have been) written in any of these languages that aren't compiled into executable binaries. The way you gripe about noncompiled code, I keep expecting you to tell us you do all your programming using cat and redirects in place of a text editor. Join us in the 21st century.

by apotheon

Perl is basically used to create lightweight DBMSes all the time. So are Python, Ruby, and PHP, for that matter, though none of them are quite as good at it as Perl. After all, a database is just a bunch of stored data, and a DBMS is just a way to shuffle data around within that database, and to feed data between the database and any application that needs to interact with it. What better language is there for shuffling data around than Perl?

by apotheon

If you're writing code for clients, you've gotta write what they want. You're on the money there.

Of course, there are clients in your area who would pay for Python, Perl, Ruby, or even Lisp or Smalltalk. I guarantee it. You're just fishing in the wrong markets for those languages, I'd guess.

by kaceyr

I don't normally go into the markets where those languages are the preferred, quite frankly because they're trying to drive their charge rates *way* down (at least in my area). In fact, several associates of mine are switching from heavy Perl/Ruby/Python shops to the VB.Net/C# shops because they'd really like to be able to pay their mortgages.

As an aside, it's interesting that you list Lisp in your reply, because one of my clients has two systems that use AutoLisp (AutoCAD version of Lisp for diagram generation and animation) pretty much exclusively. They've tried converting it to something else, but AutoCAD is a pretty tight product (and the undisputed king of the hill in the CAD arena).

by apotheon

AutoCAD should not be migrated away from Lisp, anyway. It was chosen for a good reason: metaprogramming. A language in which you essentially do your programming directly in parse trees, have symbols and lexical variables at your fingertips, and so on, is a powerful language indeed.

One of these days, when I consider myself a truly competent programmer, I'll take a serious whack at learning some flavor of Lisp effectively.

by realvdude

You'll find that C predates Python by nearly 20 years and Python was created out of frustration of another language. As I see it, the main goal of Python was to simplfy the coders desired tasks, much like C libraries, ActiveX objects, or Java Beans.

by oz_media

I never said Python predated C nor did I comment on why it was written.

Yes, Python is a simplified C, and it was created to simplify updates, debugging and recoding. Why write 200 lines when you can do the same in 20? It simply doesn't make any sense.

by kaceyr

The native that you're referring to in this case is network native communications.

Windows is able to communicate with other OS's using any standard network protocol.

by apotheon

These days, the "better" (meaning, in this case, "more powerful") languages are converging on Lisp capability, picking up tricks that Lisp has been using since 1958 but making them more accessible to "the rest of us". VB cannot, ever, approach anywhere near Lisp, and still bear any resemblance to VB's current and past semantic structure. In other words, even more important than a relationship with languages descended from Kernighan and Ritchie in this case is a relationship with languages descended from McCarthy and Russell.

by apotheon

I'll mention just a few:

1. line-oriented
2. broken OOP model
3. dog-slow
4. Whoever came up with the notion of turning BASIC into a general-purpose application programming language oughta be drug out behin' the barn an' shot. That, to me, defines the very essence of "misbegotten".

by kaceyr

1. line-oriented - Why is this a problem? This is just a parsing implementation issue, not an application issue. It would only become an application issue if a programmer were dumb enough to implement a production application in an interpreted BASIC (for the masses, VB is not, and hasn't been for a long time, an interpreted language).

2. broken OOP model - If an incomplete OOP model is a broken OOP model, then I'll give you this one.

3. dog-slow - What benchmark are you using and what language variation? The application level benchmarking that I've done for my clients shows that, in the .Net flavor, application performance between a VB.Net application and a .Not C++ application is far more dependent on memory limitations and hard drive access speed.

4. - Okay. BASIC is really no longer BASIC (for those who don't know, BASIC stands for Beginners All-purpose Symbolic Instruction Code). Microsoft considered it an easy introduction to programming which a *lot* of early programmers used, and they didn't want to lose those customers to someone else, so they evolved the language into what it is now. But they're not the only ones, check out RealBASIC and TrueBASIC as well. Either one could be used instead of VB (just not with .Net).

by realvdude

1. With subs, functions, classes, and objects where is the line orientation.

2. Other reply covers this

3. You must have a 2 legged dog, good coding techniques assure a quick VB program.

4. You would probably have to dig them out of the grave to do that. BASIC was created in 1964 for non-programmers to be able to get a computer to do something constructive.

by sterling "chip" camden

"BASIC was created in 1964 for non-programmers to be able to get a computer to do something constructive." It has always been oriented toward non- and novice programmers, and as such has always been willing to sacrifice power for ease of use. That's my main gripe (and BTW, BASIC was my very first language, but I quickly outgrew it). Furthermore, as VB has been extended with more OO features, for some inexplicable reason the terminology was butchered. "Public Shared" instead of "Public Static". "Imports" instead of "Using" (OK, maybe that was for the Java folks).
"Shadows", "MustInherit", "NotInheritable", etc. Why invent all these new terms just so that people like me who program across many languages have to keep reading the FM? Even worse, when someday Junior VB Programmer is ready to matriculate to using a real language, he/she will have to map all of these keywords over to the other set of terms.

by tony hopkinson

The big problem with VB aside from it's bad start, flat out lie about OO is it's joke of a compiler.
If you refer to a property of a non existant object, what should happen.
Access Violation or should you have a compiler that says. Silly Billy, forgot to create it, ooh diddums, who's a silly a boy/girl (delete as required), here I'll do it for you.
While that facility not to mention things like option explicit, dim, dim as New set set = new load unload arrgggH. Let Set Get, along with no abstraction, polymorphism and inheritance for your OO, VB was is and always will be a Very Bad joke.

by apotheon

object oriented programming features

In VB, that's about as tacked-on as you can get. It makes the OOP features of C++ and Perl look positively stellar and native. About the only language whose so-called OOP features are more shoddy is PHP.

by realvdude

Give me an example of how it's "tacked on". Yes, VB6.0 is missing inheritance, polymorphism and overloading, so give me an example of something you have experienced as being tacked on. Also let me know any OOP shortcomings in VB.NET; URLs please.

by tony hopkinson

There are tears in my eyes, and cider up my nose and on my monitor.

Yes VB6.0 is missing ...

Good one.

Have to go get another tinny now, and a screen wipe

by jaqui

SAMBA required for windows to communicate with any *x computer?
[ and visa versa ]
if windows can communicate with any *x system then you should be able to plug a windows laptop into a bsd network and have full functionality, yet you can't

by kaceyr

... with operations.

Just because a machine can communicate with another machine using a standard protocol doesn't mean that they share permissions, devices, applications, etc. Microsoft has never said that you can plug a Windows machine into a *nix network and immediately have complete access to the network.

I can connect my sons Xbox to my PC using an ethernet cross-over cable and have both machines detect each other, but since my PC doesn't have the Xbox identified as a user and the Xbox doesn't have the PC identified as a user, the two can't actually DO anything but handshake. And they run nearly the same OS's! Even when I give the Xbox an id on the PC, the Xbox has no service mechanism to initiate anything on the PC.

To make the boxes actually able to accomplish work with their communications, you have to have OS support services that will link up both with permissions and capabilities. If you want to connect Windows to a *nix box, download the Microsoft Windows Services for Unix. It works like a champ, but you still need to set it to share your user authentication with the Unix side or you won't get anywhere.

by kaceyr

And, like you, one of these days I'll make a serious attempt at learning some flavor of Lisp effectively. I've seen it accomplish a lot of work with very little effort, but right now, for me, it's one of those ethereal languages that I haven't taken the time to learn.

by m_a_r_k

Kacey, a tipple is a triple nibble, or 12 bits. Nah, I'm joking...ever heard of something called a dictionary? :D

http://dictionary.reference.com/search?q=tipple
[b]tip?ple[/b]
v.
To drink (alcoholic liquor) or engage in such drinking, especially habitually or to excess.

n.
Alcoholic liquor.

http://dictionary.reference.com/search?q=dictionary
[b]dic?tion?ar?y [/b]
n. pl. dic?tion?ar?ies
A reference book containing an alphabetical list of words, with information given for each word, usually including meaning, pronunciation, and etymology.
A book listing the words of a language with translations into another language.
A book listing words or other linguistic items in a particular category or subject with specialized information about them: a medical dictionary.
Computer Science.
A list of words stored in machine-readable form for reference, as by spelling-checking software.
An electronic spelling checker.

:D

by realvdude

Also known as Windows For Workgroups.
Windows NT was the first Windows Server product from Micrsoft. I'm not sure about pre 4.0, but 4.0 would talk native to Novell and Macintosh, and had Unix connectivity via TCP/IP protocol.

Microsoft and partners have worked to increase interop between systems:
http://www.microsoft.com/windowsserversystem/sfu/default.mspx (Note Startnet Communications)

http://www.macwindows.com/Win2000.html

That said, I'm not likely to argue the fact that each OS has strengths in different areas that make them relevant in the enterprise.

by realvdude

"It has always been oriented toward non- and novice programmers..." that's like saying Cobol is only for business and the only business language, or that assembler was only for scientific work. I'm curious as to what language(s) you quickly grew to and when. I picked up C in 1990, when the other language options were PIC, Cobol or a 4GL if you wanted to make a living. My first work was in Quickbasic 4.5 which compiled to a tight standalone exe, and integrated nicely to custom communication applications I was working with that were written in C. Of course back then many companies were making good money with applications created in dBase or another xbase program. As for mapping terms, I'll say one thing "C libraries, if you didn't write, it may not cross the platform divide".

by realvdude

I'm sorry that your post got turned into yet another ageless debate over program languages and operating systems. I hope that you were able to find some useful information amongst the posts; and as you can see, whatever language you choose as your next, you will have plenty of friends and foes.

Best wishes for success in your future as a programmer.

by tony hopkinson

C++ is 'object capable', how good the implementation is down to the designer. Java is a much more restrictive environment (with reason), unfortunately the guys who designed the language and it's implementation had already gained top marks in clever unreadable nasty hack C code.

Wish I could use real OO but I'm a slave to commerce.

by sterling "chip" camden

in 1978, my next language was COBOL, which I found quite adequate for business programming at the time. Structured programming and all. Then I discovered Algol, and quickly got into system programming. Then Assembler (DG Eclipse). Then Fortran (4 and 5). Then PL/1. Then DIBOL, which turned out to be a better business language than COBOL (still is, as Synergy/DE). Then C, Fortran-77, C++, TurboPascal, Visual Basic, Delphi, Java, Perl, C#. I've only toyed with other languages such as Python and Lisp, and I need to expose myself to some of the newbies like Ruby. I've done more work in Visual Basic than I care to admit. I started working with it in version 2. It has definitely improved. But I'll never be happy with it, when there are so many better languages to choose from.