Welcome to the MacNN Forums.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

You are here: MacNN Forums > Software - Troubleshooting and Discussion > Developer Center > The most powerfull language?

The most powerfull language?
Thread Tools
Dyeus
Junior Member
Join Date: Jun 2002
Status: Offline
Reply With Quote
Mar 14, 2004, 08:45 AM
 
Hi there,

I am new to programming and read that each language has it's pros and cons, now my question is basicly what is the most powerfull allround language out there...
     
Angus_D
Addicted to MacNN
Join Date: Mar 2000
Location: London, UK
Status: Offline
Reply With Quote
Mar 14, 2004, 09:17 AM
 
It's a matter of personal preference and suitability to a certain task. Your question has no straightforward answer. At best you can expect only a holy war between the proponents of one language vs the proponents of another.

People would be better able to suggest something if you indicated what you would be trying to do with it. It's probably safe to assume that you're just starting to learn. Do you want to create desktop applications for Mac OS X? Dynamic web sites talking to databases? Cross-platform applications for Mac OS X and Win32?
     
Dyeus  (op)
Junior Member
Join Date: Jun 2002
Status: Offline
Reply With Quote
Mar 14, 2004, 10:53 AM
 
now theres the problem, I want to do all 3 of them.... I have done some python and it is neat but not really suitable, I was hoping I could get some more insight on the matter by posting this "easy" question here (atleast I thought it would be easy )
     
JNI
Forum Regular
Join Date: Oct 2002
Location: Left Coast
Status: Offline
Reply With Quote
Mar 14, 2004, 12:47 PM
 
Originally posted by Dyeus:
now theres the problem, I want to do all 3 of them.... I have done some python and it is neat but not really suitable, I was hoping I could get some more insight on the matter by posting this "easy" question here (atleast I thought it would be easy )
There is no simple answer to your question, but here are some things to be aware of in making a choice of what to learn.

If you want to write applications that themselves are cross-platform, then Java is probably your best choice. It works very well on OS X, and I think Java is a great language to learn, as it is relatively straightforward, and teaches good programming practices. Granted, it may not be as 'powerful' in the sense of its ability to access all features of a native environment, but that's one of the tradeoffs you make for going cross-platform. LimeWire is a great example of a cross platform Java app that has been done very well. Yes, it has had its bumps in the road, but that can happen to any project for various technical as well as political/marketing reasons. Other big apps that are cross-platform Java are some of the development IDEs like Eclipse, JBuilder, and NetBeans. Some people snicker at Java, but that is mostly Win32 fanatics, because they think that writing cross-platform is just a waste of time. If you are looking to learn something to become a professional programmer, Java is not used in most commercial development, but it is used some (as the examples above show). YMMV.

If you want to learn a language that can take full advantage of any platform, C++ is the choice of most major software vendors and professionals. There are some toolkits that enable you to write cross-platform apps, but the better ones cost big bucks. And you still can run into issues making the apps feel totally native, as there are just some differences that the developer must be aware of to resolve those. Oh, and by default, if you learn C++, you are learning C, since C++ is a superset of C.

Objective C is a great language for learning good programming skills, as well as how easy it is to develop Cocoa apps. But it is only really useful for OS X. Still, as far as power goes, ObjC + Cocoa is immensely powerful. ObjC is also a superset of C, so that comes along for the ride again.

There are of course other languages like BASIC that can be used for cross platform work. BASIC may be easier for a beginner, but again, it is not as 'powerful' as C++ and probably Java.

Then there are the scripting languages like perl, python, and the shell scripting languages of sh (bash, zsh, ksh) and csh (tcsh) and even AppleScript, which probably wouldn't be considered as 'powerful' as the others, but are still very useful for 'ancillary' tools, especially for connecting up existing tools into solutions.

But, as others have said, 'powerful' is not an absolute measurable quality. Each language and toolkit has its place. E.g. sometimes you can write a solution in a shell scripting language that may take you 30 seconds to write that would take hours to achieve in a language like C++.

Some would argue that the most 'powerful' language is Assembler. Technically you can do 'everything' with a platform's native assembler. But that's like saying that a pickup truck is better than a Porsche. 'Powerful' is not only an element of full coverage or brute force, but how much time it takes to accomplish a task.

All professionals will eventually learn multiple languages. As a beginner, you have to start with one, and over time you will gravitate towards 'what you need' to get each task done that comes up. Once you learn the basics of logic, flow control etc, learning new languages gets easier.

Of course, the question you ask will usually start a religious argument. Some people just like different languages for all kinds of reasons. But if you look at where the majority of development is, it will show you where people have migrated. That isn't necessarily a measurement of true 'power', but as I said, there really is not absolute truth to the question.

Which is a more powerful spoken language - English, French, German or Latin?
( Last edited by JNI; Mar 14, 2004 at 12:59 PM. )
     
itai195
Addicted to MacNN
Join Date: May 2001
Location: Cupertino, CA
Status: Offline
Reply With Quote
Mar 14, 2004, 03:30 PM
 
TTYTT there's no such thing as a most 'powerful' language. Some languages are more widely used than others and thus have more learning material, tools, and communities built up around them. That's why languages like C, C++, Java, Perl, and Python are so common. Partly the answer depends on what you want to do. In my experience, I'd have to say that the one language that always impressed me is LISP, even though hardly anyone still uses it. People also often incorrectly label a language as 'powerful' when it's really a toolkit or framework they're using that is powerful. This is really a complicated question with no correct answer.

In general, the question to ask is not which language is most powerful, but rather which language is most appropriate. If you want to develop cross platform desktop applications as well as web applications with one language then your best bet is Java. It's not exactly the language that makes Java powerful though, it's the development platform -- the various Java libraries, runtime environment, etc. Consider a different situation where you wanted to write a driver for a sound card -- obviously Java would be a very inappropriate choice.

But the point of my answer (took me a while to get to it) is that a beginner should try not to be language-centric. Every language follows some basic rules of structure, abstraction, flow control, and logic. All programming is basically manipulation of data by procedures. Once you learn about some of these generalizations, you can pick up almost any language very quickly. Depending on what you want to do with programming, then you'll want to consider this approach. If you're a hobbyist, then picking up a language like Java and tinkering with it is perfectly fine. If you want a programming career, then being able to pick up new languages quickly is an essential skill.
( Last edited by itai195; Mar 14, 2004 at 03:35 PM. )
     
Angus_D
Addicted to MacNN
Join Date: Mar 2000
Location: London, UK
Status: Offline
Reply With Quote
Mar 14, 2004, 03:53 PM
 
Originally posted by JNI:
If you are looking to learn something to become a professional programmer, Java is not used in most commercial development, but it is used some (as the examples above show).
Java is used in enterprise quite a bit, I think, for massive server-side database things. It's especially popular for high-end web applications, the sort of things that are out of the reach of PHP. Having said that, PHP is going to be easier to learn and deploy for the hobbyist.
     
JNI
Forum Regular
Join Date: Oct 2002
Location: Left Coast
Status: Offline
Reply With Quote
Mar 14, 2004, 05:03 PM
 
Originally posted by Angus_D:
Java is used in enterprise quite a bit, I think, for massive server-side database things. It's especially popular for high-end web applications, the sort of things that are out of the reach of PHP. Having said that, PHP is going to be easier to learn and deploy for the hobbyist.
Yeah, sorry, I thought about mentioning the whole Java applet thing and SS stuff, but my post started getting too long. And plus, the poster being a beginner, I didn't think it was worth going back and adding that for his/her sake. But it's true, Java is very common commercially for that kind of stuff.

The main point to take from all this is that essentially what most others have already said - 'powerful' is not really an appropriate word to compare languages unless you are talking about a specific task. It totally depends on what one wants to do.
     
Dyeus  (op)
Junior Member
Join Date: Jun 2002
Status: Offline
Reply With Quote
Mar 14, 2004, 08:17 PM
 
Thanks all of you for answering my wrong question (I realize it was the wrong question, however English is not my native language though it shouldnt serve as an excuse) I got all the answers I was looking for, yet there rests one more that I was wondering about.... is it possible to merge an application written in language A with an application written language B without re-writting it?
     
JNI
Forum Regular
Join Date: Oct 2002
Location: Left Coast
Status: Offline
Reply With Quote
Mar 14, 2004, 08:36 PM
 
Originally posted by Dyeus:
Thanks all of you for answering my wrong question (I realize it was the wrong question, however English is not my native language though it shouldnt serve as an excuse) I got all the answers I was looking for, yet there rests one more that I was wondering about.... is it possible to merge an application written in language A with an application written language B without re-writting it?
The simple answer is yes.

For example on OS X you can write an application that combines C, C++, ObjC, Java and AppleScript. You could also package scripting language scripts into the application bundle.

When you link against external libraries (either supplied by another vendor, or ones you create) you may be hard pressed to even know what language it was written in.

Of course, there are rules that must be followed to do all that, but it is entirely possible, and even common.
     
Dyeus  (op)
Junior Member
Join Date: Jun 2002
Status: Offline
Reply With Quote
Mar 15, 2004, 01:28 PM
 
Are there any free C compilers available for OS X? (I am sorry for all the newbee questions)
     
Arkham_c
Mac Elite
Join Date: Dec 2001
Location: Atlanta, GA, USA
Status: Offline
Reply With Quote
Mar 15, 2004, 03:01 PM
 
Originally posted by Dyeus:
Are there any free C compilers available for OS X? (I am sorry for all the newbee questions)
Yes. All retail distributions of OSX (10.2, 10.3) come with developer tools on a CD. Further, you can download them for free from http://connect.apple.com/ if you don't have the CD for some reason.
Mac Pro 2x 2.66 GHz Dual core, Apple TV 160GB, two Windows XP PCs
     
Dyeus  (op)
Junior Member
Join Date: Jun 2002
Status: Offline
Reply With Quote
Mar 17, 2004, 10:10 AM
 
I dont have the Dev. tools cd, is it considered illegal if I would dl them?
     
Angus_D
Addicted to MacNN
Join Date: Mar 2000
Location: London, UK
Status: Offline
Reply With Quote
Mar 17, 2004, 12:45 PM
 
Originally posted by Dyeus:
I dont have the Dev. tools cd, is it considered illegal if I would dl them?
No, they are freely available from ADC Connect (free registration required).
     
Lucidwray
Junior Member
Join Date: Oct 2001
Location: Great State of Texas
Status: Offline
Reply With Quote
Mar 18, 2004, 02:17 AM
 
Im a newbie programmer also. I have been doing PHP work for a living for the past 3 years or so. I love PHP. It has so much more power than like ASP for doing web work. Much more system level capabilites like file system calls and stuff like that..

Anyway, my question is. I would like to move into writing mac software. Nothing gigantic. Just small apps and shareware type things. What is the best language for that. Ive read that Cocoa can be programmed with Java and Obj C, but which is best? Are there any differences if they are compiled into a OS X app? Im slightly leaning towards Java because it could be easily worked into my profession. (More abilities means more possible income

Ive played around with some Obj C and Java. It seems pretty straight forward. Programming concepts are programming concepts so its just a matter of learing the syntax changes and libraries. I just dont know which to start learning and where to start? Anyone know of any good tutorials that could get me started in the right direction for mac programming?

Thanks a ton,
Cody Wray
nolo contendere: A legal term meaning: "I didn't do it, judge, and I'll never do it again."
     
hayesk
Guest
Status:
Reply With Quote
Mar 18, 2004, 12:45 PM
 
Originally posted by Lucidwray:
Anyway, my question is. I would like to move into writing mac software. Nothing gigantic. Just small apps and shareware type things. What is the best language for that. Ive read that Cocoa can be programmed with Java and Obj C, but which is best? Are there any differences if they are compiled into a OS X app? Im slightly leaning towards Java because it could be easily worked into my profession. (More abilities means more possible income
Objective C is by far better to program Cocoa with. Java Cocoa apps will still be compiled to Java byte code, not native machine code like Obj-C. And because it's Cocoa, they won't be cross platform. Even if you want to use JDBC or another existing Java library, I would still use Obj-C and use the Java bridge to use those Java objects.

If your profession will be to write cross platform Java, using Java and Cocoa won't be able to be worked in. Remember, languages can learned in less than a day. It's the frameworks and object libraries that take longer.
     
itai195
Addicted to MacNN
Join Date: May 2001
Location: Cupertino, CA
Status: Offline
Reply With Quote
Mar 18, 2004, 08:33 PM
 
Java would probably be easier for you to learn, coming from a PHP background, but I recommend learning Obj C for the reasons mentioned by others.

CocoaDev has some tutorials and links to other sites with tutorials. Apple's Developer site is also an excellent resource. And I always wholeheartedly recommend Aaron Hillegass' book on Cocoa programming, it's the best tutorial out there.
     
   
 
Forum Links
Forum Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Top
Privacy Policy
All times are GMT -4. The time now is 12:17 AM.
All contents of these forums © 1995-2017 MacNN. All rights reserved.
Branding + Design: www.gesamtbild.com
vBulletin v.3.8.8 © 2000-2017, Jelsoft Enterprises Ltd.,