Computer Science Canada

Favorite Language

Author:  Fevian [ Thu Mar 08, 2007 12:10 pm ]
Post subject:  Favorite Language

Yeah...You may already know that I'm a pretty newbish programmer, and I've asked for help. So I'll ask a diff question now to help me. What is your favorite programming language to do and why? Also, what are the main functions and capabilities of the language, so I know if it's something I'd like to look in to?

Author:  bugzpodder [ Thu Mar 08, 2007 12:16 pm ]
Post subject:  RE:Favorite Language

you need to tell us more about yourself before we can make recommendations

Author:  haskell [ Thu Mar 08, 2007 2:20 pm ]
Post subject:  RE:Favorite Language

My 5 favorite languages are(in highest to lowest):

1. Common Lisp
2. Haskell
3. Python
4. C++
5. Ruby

Common Lisp is a highly flexible, multiparadigm language that has the benfit of many years of practical usage(by being the product of Lisp). It is the "programmable programming language", and is, in my opinion, the most productive language one could ever use.

Haskell is a pure functional programming language. Its power results from its clear implementation of core functional features, and through its monads(which allow side-effects). It is a very practical language, and stands a huge chance of being mainstream in the future(it is being researched by Microsoft in Cambridge).

Python is a very clear programming language. It is very easy to use, and it definately increases productivity for many. It is extremely easy to learn, and is good for a lot of things, such as administration tasks, web programming, generl-use applications, and etc... It has a wide user base, and is quite popular.

C++ is a very good programming language. It is the benefitor of many years of practical use, and has high support from the industry. It is quick and agile, and it is very practical in its usage. For me personally, it feels very natural, as does the other languages in my top 5.

Ruby is another very good programming language. It is a nice language with a high degree of object orientation, and has syntax sugar like many love with Perl. This is a blend of many languages, and is worth checking out. It can increase productivity, and has enough features and practical shortcuts to make it a very popular language among the serious programmer looking from Perl, or as a beginner.

These are my opinions on my favorite languages, maybe they will help you Smile.

Author:  Bobrobyn [ Fri Mar 09, 2007 11:55 pm ]
Post subject:  Re: Favorite Language

My favourite language right now is C, because I've learned so much learning it. It doesn't hide things from you, and I love feeling like I'm God...I love pointers, dynamic memory, and memory management. It allows me to do practically anything and assumes that I, or the programmer, knows what he/she is doing. However, it's probably not a good beginners language, because of this -- as well as it's lack of object orientation. If you can look at C code and not get scared, then you could start with it. If it gets really confusing later on, then maybe switching and coming back later is a good idea.

http://www.compsci.ca/v3/viewtopic.php?t=7146 -- A good post to read.

I think Python or Ruby are good starter programming languages -- both have object orientation, although Ruby does a better job. Their syntax is very nice and easy to learn. Ruby seems so natural to me -- although I haven't coded much in either language. My brother is learning Java within a compsci class at school, as his first language, and isn't finding it too difficult -- although I don't actually know Java, so I can't really comment.

Turing is okay, but I would avoid it unless you're learning it in compsci class. In that case, it's a nice starter language to get you to have a feel for programming.

I think learning in a class environment, personally, is the best way to go, if possible. That way, you get the benefit of having a (hopefully) experienced instructure, plus other students, to help you when you're having problems. I also find that real people explaining concepts can be helpful.

Author:  wtd [ Sat Mar 10, 2007 12:14 am ]
Post subject:  RE:Favorite Language

Spanish, though I am far more proficient with English.

Oh... favorite programming language!

Well, that's a complex question. The wise programmer learns multiple programming languages not so that he or she can choose one "best" language, but so that choice doesn't have to be made.

A parallel can be drawn with other crafts. Take carpentry, for instance. The craftsman doesn't learn to use both a hammer and screwdriver, and then go on to use one exclusively.

Author:  bugzpodder [ Sat Mar 10, 2007 1:50 am ]
Post subject:  RE:Favorite Language

however in reality, languages are not very compatible with each other so it is necessary to pick one language and stick with it

Author:  Skynet [ Sat Mar 10, 2007 2:10 am ]
Post subject:  Re: Favorite Language

C/C++. I tend to do a lot of hardware-related work, and C doesn't slow me down when I need memory access. Plus, C compilers are available for just about any piece of hardware out there. C++ I tack on because I can build C++ projects around C code very quickly if I need to bash together some sort of graphical display. I started with Turing, but I wouldn't say that's anywhere near my favourite language. I don't mind Java, but it's not the first language I reach for...I learned it because it meant I didn't have to worry about compiling C++ code on an obscure Linux distribution, plus I like the threading better than C/C++. I'll definitely use it again. The other languages I'm experienced in fit into one or more of the of the following categories: a) They're not free b) Coding style encourages bad habits c) The end result can't be run on a PC d) They're programmed graphically

I think that if you're interested in eventually working closer to the hardware, C/C++ is the place to be, and pointers are the most important thing you'll ever learn there. If you're interested in anything else, there are other people in this thread who have far more experience than I in those areas.

Author:  Martin [ Sat Mar 10, 2007 7:33 am ]
Post subject:  RE:Favorite Language

My favourite language is C++, as I feel the most proficient in it out of all of the ones that I have used. That said, Turing also has a special place in my heart for being the cause of the creation of this community and letting me meet all of these really smart people.

Author:  PaulButler [ Sat Mar 10, 2007 10:51 am ]
Post subject:  RE:Favorite Language

I agree with WTD. Once you are comfortable in one language it doesn't hurt to learn some others. My favorite at the moment is Java, because it works on both Windows and Linux (as most popular languages do), there is tonnes of documentation online, and Eclipse is the best IDE I have used to date.

I also like Ruby and C#. Most of my coding is actually done in PHP, which is one of the least painful languages to program in, but this may just because of my experience with it. I wouldn't call it one of my favorite languages.

Author:  wtd [ Sat Mar 10, 2007 7:08 pm ]
Post subject:  RE:Favorite Language

I would also note that there is a great deal of value in seeing the same problems solved through several methodologies and with various syntaxes. Ultimately it helps one see through the syntax and grasp programming at a more fundamental level.

Author:  rizzix [ Sun Mar 11, 2007 5:38 pm ]
Post subject:  Re: RE:Favorite Language

haskell @ Thu Mar 08, 2007 2:20 pm wrote:
It is a very practical language, and stands a huge chance of being mainstream in the future(it is being researched by Microsoft in Cambridge).
Not going to happen. It has a very steep learning curve as compared to the current mainstream languages (and hence it's also not very practical). Nevertheless, it is an excellent language and drawn particular interest from research and academic circles.

Author:  CodeMonkey2000 [ Sun Mar 11, 2007 8:11 pm ]
Post subject:  RE:Favorite Language

Binary is the best language. Either that or assembly Razz

Author:  haskell [ Sun Mar 11, 2007 8:12 pm ]
Post subject:  Re: RE:Favorite Language

rizzix @ Sun Mar 11, 2007 7:08 pm wrote:
haskell @ Thu Mar 08, 2007 2:20 pm wrote:
It is a very practical language, and stands a huge chance of being mainstream in the future(it is being researched by Microsoft in Cambridge).
Not going to happen. It has a very steep learning curve as compared to the current mainstream languages (and hence it's also not very practical). Nevertheless, it is an excellent language and drawn particular interest from research and academic circles.


Thats your opinion. Nothing else.

Author:  wtd [ Sun Mar 11, 2007 8:42 pm ]
Post subject:  RE:Favorite Language

Rizzix in this case, at least, is most likely correct. At least in one respect. Haskell does have a steep learning curve, but so do many "mainstream" languages in use today.

As with those languages, things tend to follow a bell curve. There are relatively few really really atrocious Haskell programmers. There are also very few really really fantastic ones. Most are of moderate skill.

The thing about Haskell is that you can't BS your way to as much in the way of results. You can be relatively ignorant of the true workings of Java or C++ or C# (or even languages like Ruby and Python) and still be reasonably productive.

Haskell provides the greatest benefit to those at the right side of the bell curve, rather than those in the middle.

Author:  Fevian [ Mon Mar 12, 2007 11:05 am ]
Post subject:  RE:Favorite Language

Well, to answer a few questions. I really want to get into game development, even if simple games and maybe a few practical apps that aren't command line interface, so eh. I'm working in C++ currently and am up to learning anything considered useful. I want to learn PHP for web development, but programs wise, I'd like to learn a few languages, maybe including Java. This is kinda why I posted this. Now, your turns again.

Author:  haskell [ Mon Mar 12, 2007 1:42 pm ]
Post subject:  RE:Favorite Language

Game development can techinically be done in pretty much any programming language. Albeit the games amy be a bit... Crude.

DarkBASIC and such languages are made for game development, but I've never been a fan of learning special purpose languages for something I have no interest in.

Author:  Fevian [ Mon Mar 12, 2007 4:57 pm ]
Post subject:  RE:Favorite Language

Thanks for the info. Currently thinking about finishing learning C++, then Java, PHP, maybe VB, C#, among other things. Anything else you guys need to tell me?

Author:  wtd [ Tue Mar 13, 2007 11:15 am ]
Post subject:  Re: RE:Favorite Language

Fevian @ Tue Mar 13, 2007 5:57 am wrote:
Thanks for the info. Currently thinking about finishing learning C++, then Java, PHP, maybe VB, C#, among other things. Anything else you guys need to tell me?


Just to encourage you to think outside of the box. All of the above languages are solidly inside the procedural/imperative box. Some are a little more "object-oriented" than others, but they're still mainly the same.

Author:  Fevian [ Tue Mar 13, 2007 12:13 pm ]
Post subject:  RE:Favorite Language

Suggestions please? I was thinking about Turing, but it's not free...But each of those languages have a strong backing and community behind them and are pretty easy from what I've seen. But still, suggestions are good.

Author:  wtd [ Tue Mar 13, 2007 12:37 pm ]
Post subject:  RE:Favorite Language

And Turing is also squarely in the same group of programming languages.

I suggest a functional programming language. It will give you a distinctly different way of thinking about solving problems. O'Caml is probably the best balance in terms of tools and support, but Scheme is also a strong academic choice, and we have a number of people here who have taken Scheme courses.

Author:  haskell [ Tue Mar 13, 2007 3:05 pm ]
Post subject:  RE:Favorite Language

My advice is not to choose any really out-there programming languages at first. I mean, these languages have limited resources and a relatively small user base. Such languages as Haskell or Clean would not make for a fantastic experience. Unless you have expert programmer friends who use those languages.

Common Lisp is a fantastic programming language if you want to get into it. I don't know how well it would fare as a first language though, the resources aren't exactly newbie-friendly.

Python is a fantastic first language though. Its very easy to learn, to use, and its used professionally almost everywhere. It can make games and so much more. There are craploads of online books, tutorials, and other guides that a person could get up and running with Python very quickly(I personally got running with Python within a couple hours). Plus the Python community is HUGE.

My advice for programming is to dive right in. Its not one of those things that gets easier if you ponder it all day. Pounce in, try it out. I personally learn better by application when it comes to computer stuff, so maybe you should try a project in a language(*cough*Python*cough*) and learn as you go. That way you learn how it applies, and will be able to apply that knowledge to future projects.

Btw, after your first language, you should try to broaden out. Thats when you find those niche languages that everyone seems to adore.

Author:  Fevian [ Tue Mar 13, 2007 9:31 pm ]
Post subject:  RE:Favorite Language

Thanks Haskell and wtd, but wtd, question, what is functional programming and what can I do with languages like O'Caml and Scheme that belong in this group. Thanks.

Author:  Clayton [ Tue Mar 13, 2007 9:36 pm ]
Post subject:  Re: Favorite Language

I highly suggest you take a look through the [Functional Programming] Forum and check out the beginner topics there. Functional Programming really makes you think about things in a different way compared to procedural languages.

Author:  Cervantes [ Tue Mar 13, 2007 9:51 pm ]
Post subject:  RE:Favorite Language

I'll field that one. Wink

Functional programming is another programming paradigm. The big programming paradigms are imperative (Turing, C, C++, Pascal, Java, and Fortran, all fit into this category), object-oriented (Smalltalk, Ruby, Python, Java, and Io fit into this category), and functional (Lisp, Scheme, ML [O'Caml and SML], and Haskell are examples of functional programming languages).

You'll notice Java is both imperative and object-oriented. A language need not be restricted to one paradigm. Ruby is also imperative, but I didn't place it there because it's so centred around object oriented programming and there are better examples of imperative languages. O'Caml and Scheme both have some object oriented nature, and even some imperative nature, but they are better as examples of functional programming.

So, what is functional programming? You've learned Turing, and so are used to declaring variables and modifying, or mutating, them. This seems very natural, right? What if I were to tell you I can express the same computation--solve the same problem you solved--without mutating any values. All I have is constants. This form of programming is much more mathematical, and it is fundamental to functional programming. Another basic idea of the functional paradigm has to do with, well, functions! In Turing, we can declare functions. If we're really clever, we can pass functions as values. (I wrote this tutorial for this very situation.) But this is difficult and clumsy in Turing. In a functional language, this is crucial. In a functional language, a function is a value, just like any other--the number 5, for example, or the character 'v'. This allows us to pass functions around with ease. It also allows us to create functions without bothering to name them. These are called anonymous functions.

Also, in functional languages, recursion is stressed. Instead of using looping constructs, functional languages use recursion to accomplish these tasks. In most imperative languages, recursion is handled poorly. Ever got a stack overflow? Yeah, many times you will, but if you look closely at the code, it really shouldn't happen. In functional languages, recursion is stressed so much that steps were made to speed up recursion so we don't suffer from these problems.

Many "functional" languages, such as Scheme and O'Caml, are not 100% functional. They allow mutation, and they have support for object-oriented programming. However, you will feel that using these features is not the natural way to express computation when writing code in these languages. It's less pretty.

So, you ask, what can we do with O'Caml and Scheme, and other functional languages? Lots can be done with them, but I'm not about to go claiming that they are used a lot in industry. They aren't. They are mostly restricted to acadamia. There are real world applications of these programs, but they aren't very numerous. It just goes to prove that real things can be done with these languages, but typically other languages are used. This is not necessarily saying, however, that those other languages are superior at making real world applications. It could simply be saying that these functional languages haven't caught on yet.

Further questions are welcome!

Author:  PaulButler [ Wed Mar 14, 2007 9:10 am ]
Post subject:  RE:Favorite Language

Great post Cervantes, I've been wondering what functional programming was for a while and reading the wikipedia article just confused things.

Author:  Fevian [ Wed Mar 14, 2007 10:02 pm ]
Post subject:  RE:Favorite Language

Yeah, that was a good explanation, but doesn't make me want to dive in to that. I am really enjoying working with C++ and I like how it's set up. I think I'll continue learning it, but when I get pretty good, I'll pick up something else. Perhaps it will be a functional language and perhaps not. This doesn't mean you can't still post on this topic giving more info or expressing your favorite language. Thanks all.


: