Forum Moderators: phranque

Message Too Old, No Replies

Learning a new programming language

What's what?!

         

YorkshireSteve

4:10 pm on Feb 12, 2004 (gmt 0)

10+ Year Member



Hi All,

I started programming several years ago using PERL. I then moved on to using PHP with MySQL. I've now found myself in a position where I'd like the learn a more powerful language. C and C++ are the first to spring to mind, but then there's Visual Basic, and all this .Net business. I'm not going to give up on the internet side of things, but I would like to move on from the limitations of HTML. I'd like to make powerful desktop applications that use databases (ODBC) and can be accessed through a web browser and also communicate over the internet.

What are the main differences between the four languages mentioned above, and which one would I be better off learning?

Thanks,

Steve.

bcolflesh

4:18 pm on Feb 12, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



One note - .NET is not a language, it is a framework - you can use several languages to take advantage of it - most proponents concentrate on C#.

If I were you, I'd learn JAVA and a C-based language.

grandpa

5:49 pm on Feb 12, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



COBOL

panic

6:33 pm on Feb 12, 2004 (gmt 0)

10+ Year Member



COBOL? HAH!

If a powerful language is what you're looking for, try assembly language. :)

bakedjake

12:22 am on Feb 13, 2004 (gmt 0)

WebmasterWorld Administrator 10+ Year Member Top Contributors Of The Month



I love python. I really, really do.

I used to be the biggest perl biggot on the face of the planet. python's sped up my development time by 3x.

Herenvardo

9:08 am on Feb 13, 2004 (gmt 0)

10+ Year Member



If a powerful language is what you're looking for, try assembly language.

I wouldn't follow this advice... even when this is technically the most powerful language (everything that can be done in a machine can be done with assembler), it's also almost the less portable (only runnable binary code is less portable ;))
The best options are C/C++/Java, but it is not an easy choice. I would suggest you to learn all the three languages, 'cause they are very similar in sintax, but ther is a problem:
If you begin learning C/C++, when you try to learn Java you will be unable to work without pointers ;)
If you begin with Java, then you will get used to bad practices untolerable in C/C++
So begin for the one that most fits your needs and, after that, if you wish, continue with the others.
Java is very secure and portable, but recently I saw somebody posting about people who dissables Java, so it's not so portable.
C++ is not so portable but much more powerfull. You will need code adaptations to migrate among systems, but not too many. And when you learn what can do pointers, multi-inheritance, operators' overload, etc for you, you will ask how have you been able to work without them untill then.
In my opinion, C++ is the best programming language available. But decide by yourself.
About Visual Basic and .NET ... that's not programming! It's simply drawing a program and let the IDE write bad code for you. The only tool from MS I like is Visual Basic, not for important projects but it makes very fast the making of small applications.

Greetings,
Herenvardö

PS: Cpp FOREVER!

tombola

5:13 pm on Feb 13, 2004 (gmt 0)

10+ Year Member



If a powerful language is what you're looking for, try assembly language.


I wouldn't follow this advice... even when this is technically the most powerful language (everything that can be done in a machine can be done with assembler), it's also almost the less portable (only runnable binary code is less portable ;))

No matter which programming language you use, your program can always call subroutines written in binary (machine) code in order to speed up some processes.

panic

5:32 pm on Feb 13, 2004 (gmt 0)

10+ Year Member



I wouldn't follow this advice... even when this is technically the most powerful language (everything that can be done in a machine can be done with assembler), it's also almost the less portable (only runnable binary code is less portable ;))

It runs on any/every operating system (provided you have the right compiler)... how is it not portable?

YorkshireSteve

5:48 pm on Feb 13, 2004 (gmt 0)

10+ Year Member



Thanks for the advice...

Would I be wise in going for C#?

panic

6:38 pm on Feb 13, 2004 (gmt 0)

10+ Year Member



Would I be wise in going for C#?

You're better off learning C.

Demaestro

10:31 pm on Feb 13, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



What you want is ZOPE.

It will do all you want and more. You can even use some of your existing PERL scripts. It also supports Python.

It provides database connections: pyscoPg with a postgreSQL database. Its all open source www.zope.org

I will be happy to help you with anything that you may need to get started. Sticky me for more info

dnimrodx

9:29 pm on Feb 15, 2004 (gmt 0)

10+ Year Member



Demaestro previously wrote:
What you want is ZOPE.
It will do all you want and more. You can even use some of your existing PERL scripts. It also supports Python.

It provides database connections: pyscoPg with a postgreSQL database.

Then I found this on the main page @ zope.com:

Zope is written in Python, a highly-productive, object-oriented scripting language.


I would like to know how can you recommend ZOPE if it is no match at all to [b]C(++)?

However, applied in the WWW world, why would you recommend it? In what ways is it better than PERL/PHP/ASP? What are the requirements for a developer to use it?

YorkshireSteve

9:38 pm on Feb 15, 2004 (gmt 0)

10+ Year Member



I was wondering that... :o¦

My main goal is to be able to create a Windows application that can communicate over the web - ie, update a database on a remote machine or something, through a windows GUI. I'd like to use ODBC to share my database with PHP and the final application(s).

I have no particular applications in mind, but the general idea would be the same. I don't see how a scripting language such as Zope could achieve this, as we'd be back to the client-server position I'm in with PHP.

Steve

txbakers

12:56 am on Feb 16, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



My main goal is to be able to create a Windows application that can communicate over the web - ie, update a database on a remote machine or something, through a windows GUI. I'd like to use ODBC to share my database with PHP and the final application(s).

In that case look at VB.Net

Herenvardo

10:21 am on Feb 17, 2004 (gmt 0)

10+ Year Member



I wouldn't follow this advice... even when this is technically the most powerful language (everything that can be done in a machine can be done with assembler), it's also almost the less portable (only runnable binary code is less portable )

It runs on any/every operating system (provided you have the right compiler)... how is it not portable?

An assembler program only runs on one machine type. Each machine has its own assembler, so to migrate a program form PC to Mac, for example, you should have to rewrite it almost entirely.

Would I be wise in going for C#?

You're better off learning C.

Of course, better C than C#. And in general, better any standard than Microsoft private technologies.

My main goal is to be able to create a Windows application that can communicate over the web - ie, update a database on a remote machine or something, through a windows GUI. I'd like to use ODBC to share my database with PHP and the final application(s).

In that case look at VB.Net

The same than with C#. It's not a standard tool. Probably it will work perfectly on a Windows NT Server with MS IIS, but not anywhere else. In any case, one of the most known advantage of Visual Basic is that it makes Windows applications with almost no effort at all. Even when it is slower than many other languages, dependeing on what are you trying to do it could work. You can make a VB application GUI that does everything thru API calls. Since the API is written in C/C++, it could work surprisingly well. If you do a good work, your application will only crash when the entire Windows chrashes (something that happens much more often than you would like).
So, ok, go with VB to make Windows applications but, if you have any hope to migrate it to another system someday, work on C/C++ or Java.

I've worked with many languages, this is a summary of how they are:
VB: very easy to learn and use, low eficience, low-medium security and stability, low-medium power.
Java: easy-medium to learn and use, low-medium efficience, high security and stability, medium power
C/C++ (beginners): Easy-medium to learn and use, medium-high efficience, medium security and stability, medium-high power.
C++ (experts): Hard to learn, medium-hard to use, very-high efficience, security and stability depending only on the programmer, very-high power.
Assembler: hard to learn and a lot harder to use, maximum efficience and power, security and stability depending only on the programmer.

So, you should choose what most fits your needs.
Greetings,
Herenvardö

txbakers

2:36 pm on Feb 17, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



I would like to post a rebuttal about not using MS proprietary software.

I used to think that open source was the best, and I would recommend Java over VB.NET any day. However, unless you are a freelancer, you will be working in an office somewhere.

Offices have standards for programming, and a set of tools they use. With Java and .NET you can write everything in a TextEditor, but most often than not the office is using some type of IDE.

Each IDE requires a learning curve to use the IDE itself, never mind learning the language. So, if you chose Java and learned on Borland JBuilder, and your new office uses Eclipse or WebSphere, you will have to learn the new IDE.

With MS there is one IDE to learn, and every company that develops with MS uses that IDE. It's much more portable within the MS platform. Yes, you are locked into the MS platform, but it's not like it's an obscure technology.

bakedjake

5:54 pm on Feb 17, 2004 (gmt 0)

WebmasterWorld Administrator 10+ Year Member Top Contributors Of The Month



Good points, tx, that I'd like to add to. It's a matter of using the best tool for the job, folks. The "Microsoft is evil" and "proprietary is evil" mentality is starting to get way old. Furthermore, I don't understand the total reluctance towards one proprietary tool (Microsoft .NET) and the total acceptance of another (Sun Java). Neither of those languages have open development processes. This isn't necessarily bad; I'm just making an observation.

Writing a web application in classic C or C++ is stupid at this point for 99.999999999% of the cases out there. Same thing with desktop apps. You'll be reinventing the wheel. Unless you're writing the actual high-performance server software (such as a dns, mail, or web server), it's unnecessary.

The Microsoft tools are very well suited to their intended job - writing web and desktop applications that run on Windows. Using VB.net or C# at this point is mostly syntactical preference.

To answer the original question in the original post, between the ones you posted, I'd probably go with VB.net.

Note: Someone above called Zope a scripting language. That's incorrect. Zope is an application server, much like WebSphere or JBoss. It uses python as its underlying language, but it provides a framework for error handling, database connectivity, etc. It's not a language.

Herenvardo

10:25 am on Feb 18, 2004 (gmt 0)

10+ Year Member



txbakers,
take a look over some IDE's. You will find that they are very simmillar among themselves, specially thoose from the same company or for the same language.
For example, if you are used to MS Visual Basic, and try to use Borland Turbo C++, you won't know how to debug your program, and the same happens if you try to pass from Turbo C++ to VBasic.
But if you're used to Visual C++, for example, and try to use either Turbo C++ or VBasic, you will be able to work there without problems.
I don't disagree with your post: I admit that using a propiertary technology ensures that you will always work on the same IDE's and/or tools.
But when working with computers, you have to be able to learn continuously. I don't believe that having to learn how a tool works should be a problem for a good programmer. If you know a langauge, you should be able to work decently with any IDE for that language in a week or so.
Personally, I'm using C/C++ since I was 14 years old, and now I can work almost in any language. I only need an specification or quik reference of the language and, within a week or less, I will be able to begin any project with that language. And same with tools and IDE's.
Each one is free to do what s/he wants, but I suggest to averybody to learn C++. It's my foavourite, but my suggestion is based in the way C++ is learned: you have to understand how a program works and you can apply that to any other language. In my opinion, if you know C++, you know a lot of programming theory usefull in almost any language, tool and IDE.

Greetings,
Hernevardö

PS: C++ and open software forever! ;)

iqbal

2:05 am on Feb 19, 2004 (gmt 0)

10+ Year Member



I am JAVA fan ,so i will suggest you this programming language. It can be use for the web , desktop applications and device programming, so you get three in one :-) .

I can send you link to tutorials for JAVA and code examples, if you are interested.

Good Luck.

Herenvardo

9:40 am on Feb 19, 2004 (gmt 0)

10+ Year Member



I am JAVA fan

I also was, some time ago. Until I found out that I couldn't live without pointers! ;)
Back to topic, if you want Windows applications and you have a lot of resources to waste, use VBasic. You will have ready applications very quick, with the only major problem that they waste twice or three times the resources that the same application would need in C/C++. But you will have in an afternoon a program that would require a week of work with a powerful language.
My best suggestion: make your lybraries with C/C++ (I recommend Borland C++ Builder) and compile them to .dll files. Then, make you main application with VBasic and use declare to import objects (classes, controls, functions, constants, etc) from the dll's. If you have criticall processes, you may even write them in assembler to optimize the most (normally you won't get better code than a borland c++ compiler unless you waste a lot of time).
And about Java, it's a good tool to improve webpages and to manage web databases, but I wouldn't use it to make a windows application. Maybe you can use it in the server you want your application to access.

Greetings,
Herenvardö the Programmer ;)