Valhalla Legends Forums Archive | General Programming | Language Recommendation

AuthorMessageTime
Mitosis
Hello everyone. I'm interested in programming, but haven't exactly settled on a language yet. As far as my programming experience goes, I create websites and use PHP5. My primary operating system is OS X Leopard, I only boot into Windows for 3ds Max and CAD. I should probably say what I am interested in (at this point in time), creating tools for web development. Creating my own editor interests me. You have heard this many times I am sure, but eventually I would like to create GUI applications.

Should I be limiting myself to a language which only runs on one type of system?

Is a language that supports multiple platforms such a good idea for a newcomer?

I have had people tell me to learn Java, C#, C, Python and Ruby, but with no specific reason.

So what is everyones thought on this? What would you guys suggest and why? I'm sorry if this thread is not wanted.
January 13, 2008, 2:06 AM
BreW
I would say assembly...
but then i'd get flamed to no end. Really, you should look into it. How can one use the statement "x = 1" without knowing what it does? It accomplishes something. You know the result. But do you know the means? Do you know what the compiler writes in order for that desired result to be achieved? Nope. In my opinion one should learn assembly before anything higher level, like C. I learned everything in the reverse order. I first learned vb6, thought that was teh shit, then learned C, then learned assembly. I never had the chance to fully appreciate how high level and simple everything else was. This is why you should learn assembly first. When you move on to C, you'll look at things like loops and conditional statements, and think, "Wow. This is so useful. I'm glad I have a compiler to translate such a high level language into machine code for me."
That's how things would be, ideally.
However we all know that would never happen. Since you already know PHP, I'd say the way to go is C. If you're accustomed to and comfortable using the object oriented features of PHP, you can use C++. From what I've heard, C++'s OOP features are very powerful. Not to mention C is nowhere near platform specific, so you can develop for Mac and Windows side by side.
January 13, 2008, 3:20 AM
Mitosis
Thanks for your reply Brew, but is it really necessary to start with Assembly for what I want? I'm not trying to contradict you, I am just curious about that topic.

I'm open to any other opinions.
January 13, 2008, 4:13 AM
dlStevens
[quote author=Mitosis link=topic=17265.msg175787#msg175787 date=1200197621]
Thanks for your reply Brew, but is it really necessary to start with Assembly for what I want? I'm not trying to contradict you, I am just curious about that topic.

I'm open to any other opinions.
[/quote]

I recommend C# to you, from two different aspects, one being It's my favorite language :). Two being, because it's a powerful language that isn't just limited towards application development, but website development as well! It'll also get you used to the syntax of C/C++ which you are I'm sure, familiar with since you know PHP. C# is powerful and will get you off to a great start in my opinion.

Good luck language hunting!

Best regards, Dale.
January 13, 2008, 5:24 AM
St0rm.iD
Talked to you on AIM. I'd suggest Java, Python, C#, or Objective-C in that order. The bitch with C# is that I am unsure how well supported winforms is on OSX.

In a nutshell:

- Java is pretty well entrenched in the industry and is crossplatform, but I still think it sucks for user applications (you need to be SMART and learn about threading)
- Python is my fav language and wxPython is pretty awesome. Industry support is surprisingly OK, but tool support is lacking (no Visual Studio)
- C# is also pretty well entrenched in the industry and you get Visual Studio which beats the pants out of most development environments (though i <3 emacs). I think it's the best language/toolset/platform combo for desktop apps. It isn't quite cross platform yet, though.
- Objective-C/Cocoa is what Macs use, period.
January 13, 2008, 5:34 AM
Mitosis
[quote author=Banana fanna fo fanna link=topic=17265.msg175792#msg175792 date=1200202492]
Talked to you on AIM. I'd suggest Java, Python, C#, or Objective-C in that order. The bitch with C# is that I am unsure how well supported winforms is on OSX.

In a nutshell:

- Java is pretty well entrenched in the industry and is crossplatform, but I still think it sucks for user applications (you need to be SMART and learn about threading)
- Python is my fav language and wxPython is pretty awesome. Industry support is surprisingly OK, but tool support is lacking (no Visual Studio)
- C# is also pretty well entrenched in the industry and you get Visual Studio which beats the pants out of most development environments (though i <3 emacs). I think it's the best language/toolset/platform combo for desktop apps. It isn't quite cross platform yet, though.
- Objective-C/Cocoa is what Macs use, period.
[/quote]

I am assuming that in my case Python or Objective-C/Cocoa would be best for developing on OS X. I'm going to do some reading up on the two languages and then tell you what I think.
January 13, 2008, 5:53 AM
Hell-Lord
Java or C# for sure, don't burden yourself with C/C++ unless you are doing some really process intensive routines then maybe do those in a lower level language.
January 13, 2008, 6:43 AM
BreW
Don't listen to them. C/C++ is ideal for you. Since when is Mac going to support the Microsoft .NET framework that C# uses? I do assume you're developing for mac. I mean hey, I wouldn't be developing for windows right now if my computer wasn't shipped with it. Python is also nice, though. If you don't like C++.
January 14, 2008, 5:04 PM
JoeTheOdd
[quote author=brew link=topic=17265.msg175799#msg175799 date=1200330248]
Since when is Mac going to support the Microsoft .NET framework that C# uses?
[/quote]

Fink + Mono.
January 14, 2008, 5:36 PM
MysT_DooM
RealBasic, fun and easy  for making stuff for macs
January 14, 2008, 5:39 PM
Mitosis
[quote author=brew link=topic=17265.msg175799#msg175799 date=1200330248]
Don't listen to them. C/C++ is ideal for you. Since when is Mac going to support the Microsoft .NET framework that C# uses? I do assume you're developing for mac. I mean hey, I wouldn't be developing for windows right now if my computer wasn't shipped with it. Python is also nice, though. If you don't like C++.
[/quote]

I'm currently looking into Java and C/C++/Cocoa development books.
January 14, 2008, 6:54 PM
dlStevens
[quote author=brew link=topic=17265.msg175799#msg175799 date=1200330248]
Don't listen to them. C/C++ is ideal for you. Since when is Mac going to support the Microsoft .NET framework that C# uses? I do assume you're developing for mac. I mean hey, I wouldn't be developing for windows right now if my computer wasn't shipped with it. Python is also nice, though. If you don't like C++.
[/quote]
You're assuming he's developing for Mac?...

[quote author=Mitosis link=topic=17265.msg175781#msg175781 date=1200189962]
My primary operating system is OS X Leopard, I only boot into Windows for 3ds Max and CAD.
[/quote]

January 14, 2008, 8:35 PM
Quarantine
[quote author=brew link=topic=17265.msg175799#msg175799 date=1200330248]
Don't listen to them. C/C++ is ideal for you. Since when is Mac going to support the Microsoft .NET framework that C# uses? I do assume you're developing for mac. I mean hey, I wouldn't be developing for windows right now if my computer wasn't shipped with it. Python is also nice, though. If you don't like C++.
[/quote]

Except that C# is an EMCA standard, and it's been reimplemented outside the .NET Framework.
January 14, 2008, 8:58 PM
Quarantine
[quote author=Banana fanna fo fanna link=topic=17265.msg175792#msg175792 date=1200202492]
Talked to you on AIM. I'd suggest Java, Python, C#, or Objective-C in that order. The bitch with C# is that I am unsure how well supported winforms is on OSX.
[/quote]

Yea, WinForms is pretty bad even on Mono IIRC. I'd go with GTK#.
January 14, 2008, 9:00 PM
St0rm.iD
Yo dude. I hate Java. But learn Java anyway. Everyone else does. You are going to be screwed when you enter a CS program in college and don't know Java.
January 14, 2008, 10:34 PM
BreW
[quote author=Dale link=topic=17265.msg175810#msg175810 date=1200342948]
[quote author=brew link=topic=17265.msg175799#msg175799 date=1200330248]
Don't listen to them. C/C++ is ideal for you. Since when is Mac going to support the Microsoft .NET framework that C# uses? I do assume you're developing for mac. I mean hey, I wouldn't be developing for windows right now if my computer wasn't shipped with it. Python is also nice, though. If you don't like C++.
[/quote]
You're assuming he's developing for Mac?...

[quote author=Mitosis link=topic=17265.msg175781#msg175781 date=1200189962]
My primary operating system is OS X Leopard, I only boot into Windows for 3ds Max and CAD.
[/quote]
[/quote]
It's a pretty fair guess
What would he be developing for?
January 15, 2008, 1:55 AM
Mitosis
I know Java is going to be used in my CS courses in University, I was just curious on all of your opinions. Yes at THIS point and time I want to develop solely for OS X.

I have been reading up on the languages you guys have suggested me and these are some Pros/Cons I have found for each.

Java
[quote]Some pros
- it is very safe. Many other languages (C, C++) have items called "raw hardware pointers", which allow a programmer to refer to the location of items in memory. When mistakes are made with such pointers, then the program will often fail catastrophically. Not good. Java has pointers (since all object references are pointers) but they are not "raw" pointers, they are safe ones - the programmer cannot manipulate hardware addresses directly, and thus cannot make errors in manipulating them
- it has a extensive library of high quality. A "library" is rougly a collection of parts which may be used to build a program. A library implements a set of related programming tasks which may be easily reused by other programmers. I don't know of any other language which has such an extensive library as Java.
- it is well-behaved. It is easier to write programs which behave as expected. In C++, on the other hand, has many more subtleties which can trip up the unwary.
- it is very portable - "write-once, run anywhere"

Some cons
- Some parts of the Java libraries are harder to use than others
- it is not quite as fast as some other languages. The gap in performance was large in the early days of Java, but nowadays the speed of Java vs C, for example, is remarkably competitive. I remember seeing a measurement in 2001 that Java running on a server is about 80% the speed of comparable C, which is rather remarkable, actually.[/quote]

^ source http://today.java.net/cs/user/view/cs_msg/1809

Python
[quote]The pros
Some of Python’s features that make it a reasonable candidate for use in enterprise applications are:
Free availability (like Perl, Python is open source).
Stability (Python is in release 2.2 at this point and, as I noted earlier, is older than Java).
Good support for objects, modules, and other reusability mechanisms.
Easy integration with and extensibility using C and Java.

The cons
Obviously, some sound arguments must be considered on the other side of the Python-in-the-enterprise question. Primary objections to Python as a viable enterprise-level programming language focus on these issues:
Smaller pool of Python developers compared to other languages, such as Java
Lack of true multiprocessor support
Absence of a commercial support point, even for an Open Source project (though this situation is changing)
Software performance (though benchmarks repeatedly demonstrate Python is comparable to Java in most applications)[/quote]

^ source http://articles.techrepublic.com.com/5100-22-1045768.html

C++
[quote]Pros and Cons
Pros: C++ is powerful and widely known; it is object oriented. Cons: it's a large language to learn.[/quote]

^ source http://www.cs.vu.nl/~eliens/documents/libero/lrlang4.htm

January 15, 2008, 2:36 AM
dlStevens
[quote author=brew link=topic=17265.msg175820#msg175820 date=1200362129]
[quote author=Dale link=topic=17265.msg175810#msg175810 date=1200342948]
[quote author=brew link=topic=17265.msg175799#msg175799 date=1200330248]
Don't listen to them. C/C++ is ideal for you. Since when is Mac going to support the Microsoft .NET framework that C# uses? I do assume you're developing for mac. I mean hey, I wouldn't be developing for windows right now if my computer wasn't shipped with it. Python is also nice, though. If you don't like C++.
[/quote]
You're assuming he's developing for Mac?...

[quote author=Mitosis link=topic=17265.msg175781#msg175781 date=1200189962]
My primary operating system is OS X Leopard, I only boot into Windows for 3ds Max and CAD.
[/quote]
[/quote]
It's a pretty fair guess
What would he be developing for?
[/quote]

Either you're missing something or I am, and my bets are on you; I'm stating that he practically said he's developing for mac.
January 15, 2008, 3:22 AM
BreW
[quote author=Dale link=topic=17265.msg175822#msg175822 date=1200367320]
[quote author=brew link=topic=17265.msg175820#msg175820 date=1200362129]
[quote author=Dale link=topic=17265.msg175810#msg175810 date=1200342948]
[quote author=brew link=topic=17265.msg175799#msg175799 date=1200330248]
Don't listen to them. C/C++ is ideal for you. Since when is Mac going to support the Microsoft .NET framework that C# uses? I do assume you're developing for mac. I mean hey, I wouldn't be developing for windows right now if my computer wasn't shipped with it. Python is also nice, though. If you don't like C++.
[/quote]
You're assuming he's developing for Mac?...

[quote author=Mitosis link=topic=17265.msg175781#msg175781 date=1200189962]
My primary operating system is OS X Leopard, I only boot into Windows for 3ds Max and CAD.
[/quote]
[/quote]
It's a pretty fair guess
What would he be developing for?
[/quote]

Either you're missing something or I am, and my bets are on you; I'm stating that he practically said he's developing for mac.
[/quote]
Yeah, said he's developing for mac too. Why would you think i thought otherwise?
January 15, 2008, 3:24 AM
FrostWraith
It really depends on what you feel like you are going to do with your future, unless you want to just keep it as a hobby.  My major is Mechanical Engineering and my schedule is pretty strong in both C and x86 ASM.  The problem is a lot of employers for internships and co-ops looks fro backgrounds in the .NET framework, which mostly means C#.  Remember, this is from an engineering perspective, but keep what you are going to do in the forefront of your mind.
January 15, 2008, 3:26 AM
Mitosis
[quote author=FrostWraith link=topic=17265.msg175824#msg175824 date=1200367582]
It really depends on what you feel like you are going to do with your future, unless you want to just keep it as a hobby.  My major is Mechanical Engineering and my schedule is pretty strong in both C and x86 ASM.  The problem is a lot of employers for internships and co-ops looks fro backgrounds in the .NET framework, which mostly means C#.  Remember, this is from an engineering perspective, but keep what you are going to do in the forefront of your mind.
[/quote]

All my applications to University are for Computer Science, Animation and Web Development. I am serious about this and just wanted to pick up some new knowledge (excluding web development) before the summer.
January 15, 2008, 3:29 AM
FrostWraith
Then I would strongly recommend getting comfortable with C#, especially now with the 3.5 framework out now.  C# is good because you can develop both windows applications and web applications in one environment.  PHP is fun, but most professional companies that I have come to deal with unfortunately do not use it.
January 15, 2008, 3:46 AM
Quarantine
Really, just look into whatever's easier to get going.

The differences between C# and Java are slight enough that knowing one will make it very easy to adapt to the other.
January 15, 2008, 4:51 AM
Mitosis
Thank you everyone for the time and effort you put into your posts. I am going to be looking into Objective-C/Carbon and Python.
January 15, 2008, 12:56 PM
Yegg
[quote author=Mitosis link=topic=17265.msg175833#msg175833 date=1200401764]
Thank you everyone for the time and effort you put into your posts. I am going to be looking into Objective-C/Carbon and Python.
[/quote]

I was going to recommend Obj-C and Python if I saw this thread earlier. However, wouldn't it be easier/better to go with Cocoa instead of Carbon? Unless you plan on also supporting OS Classic and if so, why would you want to support it?
January 15, 2008, 6:38 PM
Mitosis
[quote author=Yegg link=topic=17265.msg175843#msg175843 date=1200422280]
[quote author=Mitosis link=topic=17265.msg175833#msg175833 date=1200401764]
Thank you everyone for the time and effort you put into your posts. I am going to be looking into Objective-C/Carbon and Python.
[/quote]

I was going to recommend Obj-C and Python if I saw this thread earlier. However, wouldn't it be easier/better to go with Cocoa instead of Carbon? Unless you plan on also supporting OS Classic and if so, why would you want to support it?
[/quote]

My mistake Yegg, I meant to say Cocoa. I'm not really interested in supporting OS Classic.

Thank you everyone.
January 15, 2008, 6:45 PM

Search