PDA

View Full Version : Most Useful Programming Language


krypt
10-24-2008, 03:32 AM
I'm starting a programming club at my school and I'm trying to be flexible about what language we learn (other than Java) and I think people won't really care either way. I'm not really sure which one is actually the most useful so I was looking for some input from people that actually know/use the various languages. I was wondering what people think the most useful/versatile programming language is.
Thanks!

davmoo
10-24-2008, 04:34 AM
You can ask 50 people this question, and you'll get at least 125 opinions. There is no "best" language. The choice depends on what you want to do. This is one of those questions like asking which religion is better, Christianity or Hinduism.

My personal opinion is that Python would be good for beginners.

krypt
10-24-2008, 04:50 AM
You can ask 50 people this question, and you'll get at least 125 opinions. There is no "best" language. The choice depends on what you want to do. This is one of those questions like asking which religion is better, Christianity or Hinduism.

My personal opinion is that Python would be good for beginners.

I figured that would be the general response. I was wondering what everyone preferred and the general uses for them. I've heard Python and Perl are generally pretty good places to start.

therage800
10-24-2008, 06:52 AM
I started with C. Python is pretty much dead. C is a good building language. There are many variants of C, but I'm referring to just C.

davmoo
10-24-2008, 08:46 AM
Python is pretty much dead.

Damn...is it April 1st already?! :eek:

therage800
10-24-2008, 09:18 AM
Damn...is it April 1st already?! :eek:

When's the last time anyone wrote a fully functional program in Python?

rsone
10-24-2008, 02:33 PM
I started with C. Python is pretty much dead. C is a good building language. There are many variants of C, but I'm referring to just C.
C is not a good language for beginners. Try explaining pointers. Also no OO support, no garbage collector, no exception handling, ...
When's the last time anyone wrote a fully functional program in Python?
Google ?

tokenuser
10-24-2008, 03:08 PM
Why no Java? It is the obvious choice.

xcorvis
10-24-2008, 03:11 PM
When's the last time anyone wrote a fully functional program in Python?

Here are a few thousand programs written partially or completely with python:
http://freshmeat.net/browse/178/

Huge chunks of all of Google's products use python, both web apps and desktop apps like Chrome. I know a python developer who works on Youtube.

I'm a fan of python. It may not be the most powerful or fastest language, but it is easy to learn and very versatile. It is considered by many to be an excellent first language.

My college taught Scheme first, so that we'd learn certain programming concepts first. I can see the reasoning behind it, but I would have rather learned python then.

fishtoprecords
10-24-2008, 08:56 PM
I started with C. Python is pretty much dead. C is a good building language. There are many variants of C, but I'm referring to just C.

WTF? C is a terrible language. C is the grade that K&R would have received if they submitted C in a language design class. Its nothing but PDP-11 assembler with some eye candy.

Python is hot.

I also wonder why the OP said "not Java" as Java is a good learning tool, widely used and supported, and once you know Java, you can move up to real languages like Scala.

Perl and PHP have value, but they are a bit loose for my tastes. (note, this is a proper use and spelling of loose, unlike the 733T folks who misuse it)

tokenuser
10-24-2008, 09:21 PM
Python is a good language?
WTF? What next RoR is the best framework?

Python has its uses, but its had its day. It does not scale.

I have two language I use, C - and now Objective C using Cocoa for client side things, and Java for server side and limited client side.

Why? C code is tight and efficient (notice I didn't say C++? I can get tighter code in C) - but not one I'd recommend for learning - and perfect for handset development (iPhone). Java scales and is designed for efficient network usage - it is also a perfect teaching language because it teaches pretty much every concept you need for modern development (and it will give yo a head start for college courses).

If Java scares you for some reason, seek out a copy of "Thinking in Java (http://www.mindview.net/Books/TIJ/)" by Bruce Eckel.

white
10-24-2008, 09:36 PM
Read http://stackoverflow.com/questions/4769/what-is-the-easiest-language-to-start-with

bani-banan
10-24-2008, 09:51 PM
I'm currently learning C#, Ruby on Rails. Not really that happy about C#, since it's .NET. The framework sucks donkey balls.
But, it's mandatory to get the basics of it.

I've been working with python for almost a year now, and I really like it.

I'd say, as a beginner to someone who wants to start with programming - start with a high level language. Like python. With mod_python on the apache side. It scales better that way. I don't know about django. I haven't read up on the framework.
The creator of Flickr hates it - with a passion.

Perl is really useful in server management. Especially Windows servers.

RoR has improved. I've heard that scaling is a lot better.

I'd say, get the basics of perl and python. It'll REALLY help you understand the structure of C, C++ and C#.

Web applications are often written in PHP, ruby on rails, or Perl.

Java. Meeh. It's good that it's not locked down to a platform. But it's so god damn heavy on the system resources. I cringe every time I see a .jar file.
Good luck!

davmoo
10-24-2008, 10:17 PM
Python has its uses, but its had its day. It does not scale. .

I'll have to pass your post on to Google, since they are obviously unaware that Python does not scale and have been doing it, quite successfully, anyway.

tokenuser
10-24-2008, 10:57 PM
I'll have to pass your post on to Google, since they are obviously unaware that Python does not scale and have been doing it, quite successfully, anyway.You do not understand how or where Google is using Python.

It is used as Googles scripting language, and is not used for any forward facing code.

Where is Python used?

The Google build system is written in python. All of Google's corporate code is checked into a repository and the dependency and building of this code is managed by python. Greg mentioned that to create code.google.com took about 100 lines of python code. But since it has so many dependencies, the build system generated a 3 megabyte makefile for it!
Packaging. Google has an internal packaging format like RPM. These packages are created using python.
Binary Data Pusher. This is the area where Alex Martelli is working, on optimizing pushing bits between thousands of servers
Production servers. All monitoring, restarting and data collection functionality is done with python
Reporting. Logs are analyzed and reports are generated using Python.
A few services including code.google.com and google groups. Most other front ends are in C++ (google.com) and Java (gmail). All web services are built on top of a highly optimizing http server wrapped with SWIG.


Google uses C++ and Java for things that need to scale (both vertically and horizontally).

rsone
10-25-2008, 12:07 AM
Web applications are often written in ruby on rails.

Don't believe the hype.

rsone
10-25-2008, 12:21 AM
Python has its uses, but its had its day. It does not scale.

Scaling is not really relevant for the topic starter.

tokenuser
10-25-2008, 06:07 AM
Scaling is not really relevant for the topic starter.Probably not, but by the time the OP and his programming club are out in the world and want to do something useful ... python (and RoR) are going to be irrelevant, and replaced by the language of the day.

There is a reason first year college students learn Java and/or C ... because the principles learnt are relevant to pretty much any other language out there.

Then again what do I know (BCompSc - Software Engineering, professional developer). My wife is clueless as well (PhD Information and Computer Science, MCompSc - Software Eng, MS - AI/Machine Learning, and now a professor teaching college level database design/analysis, and Java to first year students - because it teaches you all the good stuff you need).

davmoo
10-25-2008, 07:21 AM
Actually, if they want to plan for the future, the language that is showing the most growth in demand is...believe it or not...COBOL.

bani-banan
10-25-2008, 01:11 PM
Fuck everything and go with Pascal and assembly.

Good luck, boys! :)

therage800
10-25-2008, 01:49 PM
Fuck everything and go with Pascal and assembly.

Good luck, boys! :)

Ha ha, that made me laugh! Pascal and Assembly FTW!

tokenuser
10-25-2008, 01:58 PM
Actually, if they want to plan for the future, the language that is showing the most growth in demand is...believe it or not...COBOL.Thats a very narrow niche. All the companies that I deal with that have massive investments in COBOL are converting NOW -generally into web accessible SQL database driven (not SQL server, SQL in the generic RDBMS form) systems.

rsone
10-25-2008, 04:30 PM
Probably not, but by the time the OP and his programming club are out in the world and want to do something useful ... python (and RoR) are going to be irrelevant, and replaced by the language of the day.

There is a reason first year college students learn Java and/or C ... because the principles learnt are relevant to pretty much any other language out there.


I agree, java is a good language to start with, strong typed but no pointer hassle. What I get from the first post is that they already choose java and that they are looking for a second language.

tokenuser
10-25-2008, 04:40 PM
I agree, java is a good language to start with, strong typed but no pointer hassle. What I get from the first post is that they already choose java and that they are looking for a second language.I am not so sure ... it just sounded dismissive of Java.

To be honest, a far more useful project would be a LAMP project ...

Linux - The OS is largely irrelevant, but would expose the programmers to what is going on under the hood for setting up ...
Apache - As a web server (and maybe Tomcat as an App Server later if they want to compare/contrast PHP with a Java Servlet implementation) that hooks into ...
MySQL - or another database app and is accesed by ...
PhP - as the overriding language for the website.

Pick a project - an online yearbook perhaps - and take it from there. Database driven website design is a far more useful skill than many others out there, and would pullin a lot of other elements that a pure programming project would not.

xcorvis
10-25-2008, 04:40 PM
Maybe the OP will sound off on this, but I think the reason he excluded Java is because he's already at college - and they're probably already learning Java in class. The programming club is most likely looking for a second language.

Java is a good language to learn. It's widely used and highly portable. It's been getting much less resource intensive over time too. It would be my second choice to python, because I think python is more accessible to beginners. Programmers really should learn more than one language. It makes them more flexible and able to think about problems in different ways.

krypt
10-25-2008, 04:54 PM
Maybe the OP will sound off on this, but I think the reason he excluded Java is because he's already at college - and they're probably already learning Java in class. The programming club is most likely looking for a second language.


Exactly. We've already got a java class going and I was looking for something that we didn't offer in the curriculum. Thanks for all the responses!

gobo
10-25-2008, 07:06 PM
If you are already doing Java I would go with PHP as my second one. It's amazingly well documented and supported on almost every server on the planet.

Then again if you're doing desktop apps neither PHP or Java make much sense. Although they can (and are) both used for desktop apps, especially Java.

jdhore
10-25-2008, 07:24 PM
For starting, i would recommend Python or Vala. Perl isn't really a programming language, it's more like a scripting language which you probably don't want (you can write full programs in perl, but i've never heard of any that didn't totally suck).

Python - Easy to learn, used a lot, works on the big 3 OS's, lots of documentation and example code to work off of.

Vala - Easy to code. Basically...Slightly modified C# syntax...It only works on *nix as far as i know...BUT...it has one major advantage to most languages. As i mentioned, it's easy to code, but Vala code can be compiled into C to make it blazingly fast compared to C# running via Mono. http://code.google.com/p/vala-benchmarks/wiki/BenchResults

If you want a more advanced language once you get past one of those 2, i'd recommend C. It's not as easy to code as C++, but the code is much cleaner and garbage collection is *gasp* SANE. Also, C is nice because there's an amazing multitude of C apps out there to hack on when you're starting out so you're not starting from scratch. For example, 95% of the linux kernel is in C, GNOME is C, ~70% of the Vista kernel is C, X.Org is C, etc.

fishtoprecords
10-25-2008, 11:19 PM
There is a reason first year college students learn Java and/or C ... because the principles learnt are relevant to pretty much any other language out there.

There are still schools teaching rookies in C? Arrggghh. C is an ancient language that was not very good when it was new. It does nothing to solve problems in modern systems.

How does anyone program a 16 core processor in C?

Now, most of this thread is pointless. My mom is better looking than your mom.

I agree with @tokenuser that what is important are the concepts. There is no chance that Java or Python will be important in a decade. I've been writing professional Java code for a decade already, there is no way its gonna stay important for 20 years.

computoman
10-26-2008, 07:50 AM
If you plan to be system programming, C might be the thing to learn since it is closer to asm than other languages. Thought with multicore cpus, parallel and multithreaded programing can make things more interesting. I actually saw an article that said cobol was still the language to know. I had to kind of laugh it off. Some people are now saying that java is now what cobol was. I personally do not think it matters the language except in specific cases, but It is important that you know when doing legacy procedural programming the logic and data constructs. Syntax can always be learned. I used to be jealous of pascal so I would convert programs from it into basic. Supposedly now python the language to learn. Personally oops is the way to go, but it never hurts to have a backup procedural language tools when oops will not do what you want. Also every new os will have its own command line programming. No matter what language you know there will be some new hot language around the corner to learn. My first full time programming job was with databus and rpgii. Things have changed a lot since then. I would say one should learn several languages just to keep up with the prevailing syntax practices and to know as much as you can about what you are programming for (i.e a medical coding system).

davmoo
10-26-2008, 09:44 AM
One language I would say don't pick as a first language is definitely BASIC. Even now, 35+ years later, one can look at almost any bit of coding over a hundred lines that I write in any language and detect that BASIC was my first language. Old habits die hard :o

krypt
10-27-2008, 02:58 AM
I am not so sure ... it just sounded dismissive of Java.

To be honest, a far more useful project would be a LAMP project ...

Linux - The OS is largely irrelevant, but would expose the programmers to what is going on under the hood for setting up ...
Apache - As a web server (and maybe Tomcat as an App Server later if they want to compare/contrast PHP with a Java Servlet implementation) that hooks into ...
MySQL - or another database app and is accesed by ...
PhP - as the overriding language for the website.

Pick a project - an online yearbook perhaps - and take it from there. Database driven website design is a far more useful skill than many others out there, and would pullin a lot of other elements that a pure programming project would not.

This sounds like a great idea. Are there any online guides/resources?
thanks

doxid
10-27-2008, 08:08 AM
When's the last time anyone wrote a fully functional program in Python?

WTF are you babbling about? seriously.
Ok Python has some downsides.

But first off, it's a great programming language for beginners and developers in general. You can create smaller applications in under a day.
Sure it might not be useful enough for say a whole world wide economics platform, but Python does the trick.
And it's super easy to learn.

Just the other day i created a "fully functional" as you stated mailserver, and with some help of C++ modules you can make a router application with Python.

Sure C is alot faster, and C++ is also faster and supports modules.
But Python gets the job done way way faster since you don't need to spend two months developing a calculator application.

Just because you are "1337" with C and you don't use Python dosn't mean it's dead.



Her's my recommendations:
If you are all into windows, go with Visual Basic 6.0. Whatever people say, it's a frickin easy language. Suck's ba**s but it's to easy to take a pass on.
If you are planing on moving or if you are using *nix systems, go with Python.
I myself started with Visual Basic, moved over to PHP and now days i use Python (altho i know C++, C, ASM ...).

As mentioned, took me 2 days to develop a Mailserver with full functionality.
A webserver took me 3 days with a script engine and SSL support.
A chat application with drawing features and a lot of other stuff took me a weekend with a friend.

therage800
10-27-2008, 05:19 PM
WTF are you babbling about? seriously.

Just because you are "1337" with C and you don't use Python dosn't mean it's dead.



OK, I'm really not a programmer so it really wasn't my place to say anything... But Tokenuser offered a much better explanation above, basically summed up the same as my thoughts on the matter very articulately. BTW, I would never use the term "l337"!

tokenuser
10-27-2008, 05:32 PM
There are still schools teaching rookies in C? Arrggghh. C is an ancient language that was not very good when it was new. It does nothing to solve problems in modern systems.Really? There are a lot of systems out there stll using C. Just because you dont see them on a desktop doesn't mean that they aren't out there.

PLCs (Programmable Logic Controllers) controlling steel plants? Often programmed in a variant of C - why? Because it is a language that is a step up from assembler, and much easier to program.

Cell phones? Many of them have C as their development language of choice.

How does anyone program a 16 core processor in C?Thats the difference between being a programmer, and being a software enegineer. A programmer will try to solve any problem in their language of choice.

Part of that is understanding lower level languages - procedural languages - because they have a useful purpose in teaching structure and giving an understanding of what is going on under the hood so that you can be a better programmer (in whatever language).

FWIW - PS3 Cell processors (and the similar Cell processors used by IBM in their supercomputers) are programmed using C - not C++. Synchronising threads and such for multiprocessor and multithreaded apps is a bear in any language. Java handles it nicely, but with the appropriate library, so does C (and it makes for some interesting pointer arithmetic).

Now, most of this thread is pointless. My mom is better looking than your mom.

I agree with @tokenuser that what is important are the concepts. There is no chance that Java or Python will be important in a decade. I've been writing professional Java code for a decade already, there is no way its gonna stay important for 20 years.Regardless of the language chosen, it is the underlying concepts that are important. Get those nailed, and you can pretty much pick up any language - maybe not to write from scratch immediately, but enough to be able to read the code and what its doing, and make changes to it ... and that will lead to design and analysis in that language over time.

doxid
10-27-2008, 10:33 PM
Python:
http://pici.se/pictures/bqsJuqaQQ.png
Copyright to my company on this project btw : )
(Nothing fancy but it's still the way it is -.-, even if it's not great or anything)

doxid
10-28-2008, 12:33 PM
Gha can't edit my post ._.
Anyway.

Python is a good language?
WTF? What next RoR is the best framework?

Python has its uses, but its had its day. It does not scale.

Yes Python has been around for a while but it surly haven't "had it's day".
Just because someone (you) says so , doesn't make it so.

And quite frankly i wouldn't use Java for any larger applications even if someone put a gun to my head.
Sure it has a great garbage collector, it's scale-able in terms of cross platform,
everyone knows how to program it and it has a lot of fancy pre-written code that you can utilize.
But honestly, my grandmother can calculate prime numbers faster then Java.
.NET, Java and all of the C# code in the world is horrible.

It's sorta like a Visual Basic programmer, isn't really a programmer.
More of a Graphics Designer printing fairy tales behind the fancy graphics.
Java is huge, slow, ugly as hell and i really don't like the way the code is written.
And the size of the applications (can be my ASM habit disliking the size).

Java *might* be a good learning language if you have a teacher that teaches you everything.
Someone is going to kill me for saying this but it's not that far from PHP/C++ in terms of syntax.
Hence why it can be a lot to process for a normal person.
Python has a cleaner syntax, much less code for everything basically.

The only and i mean only downside to Python is that it in some times can be interpreted as slow.
Now i have never ever had a delay in a Python application that ever made me think,
"damn.. i should have done this in C/C++/ASM".
Sure i use a C++ module for the SSL in Python since i know Python is a bit slow when it comes to
encryption/decryption techniques but Python still does the job well more then average.

Some visual aid might come in handy : )
Java:
http://i38.tinypic.com/2z9e44w.jpg

Python:
http://sofunnystuff.com/wp-content/gallery/motivational-posters/3.jpg
I would imagine the code would look something like this:

import fro
fro.shape('hat')


Side note, Assembly:
http://sofunnystuff.com/wp-content/gallery/motivational-posters/63.jpg

tokenuser
10-28-2008, 03:03 PM
And quite frankly i wouldn't use Java for any larger applications even if someone put a gun to my head.In "the real world" Java, and flavours of ASP rule the roost for large scale client/server based applications.

PHP is out there, but not in any large way on commercial quality systems.

How do I know?

I write RFP responses for a mid sized software company (300 employees) that has a large scale Java based application (Java server side, XML/CSS/Javascript on the client side, ActiveX controls for desktop integration) that works via web browsers and gives the user a "desktop style experience".

Laugh all you want. We finalise a deal worth $3M in licensing, $1.5M in professional services, and annual residuals on Friday. I am writing another response at the moment which will net about $1M plus annual residuals. These are with major financial organisations. If you open your wallet, or check your insurance or investment accounts - you'll probably see our client list there as well (and no - the insurance and investment industry is not in as big a mess as the media indicates ... at least not in the areas I deal with).

It is web services certified by IBM, has been held up by Sun as the poster child for horizontal and vertical scalability, and is fully ISO27001 compliant (try that with PHP or Python).

The gun is loaded ... want to pull the trigger?

doxid
10-28-2008, 06:46 PM
In "the real world" Java, and flavours of ASP rule the roost for large scale client/server based applications.

PHP is out there, but not in any large way on commercial quality systems.

How do I know?

I write RFP responses for a mid sized software company (300 employees) that has a large scale Java based application (Java server side, XML/CSS/Javascript on the client side, ActiveX controls for desktop integration) that works via web browsers and gives the user a "desktop style experience".

Laugh all you want. We finalise a deal worth $3M in licensing, $1.5M in professional services, and annual residuals on Friday. I am writing another response at the moment which will net about $1M plus annual residuals. These are with major financial organisations. If you open your wallet, or check your insurance or investment accounts - you'll probably see our client list there as well (and no - the insurance and investment industry is not in as big a mess as the media indicates ... at least not in the areas I deal with).

It is web services certified by IBM, has been held up by Sun as the poster child for horizontal and vertical scalability, and is fully ISO27001 compliant (try that with PHP or Python).

The gun is loaded ... want to pull the trigger?

And i work for a company that has over 40'000 employees that i and a team that i work with serv every day regarding software development, issues and much more.
We do also have some Java firmwares that we use on a daily basis.
We also have Visual Basic applications, C/C++ and Cobol.
Cobol is used only on our IBM mainframe that supports all these users at once.
Now, If we compare the applications we got, the Java ones is the ones that are being cursed at the most. They are slow, take way to much time to execute tasks compared to other applications.
Comparing those Java applications to some of the applications ive developed myself personally over the years Python actally beats Java in alot of ways.
First off the code is alot smaller, it's in a lot of ways faster.
The only downside is that most clients use a windows based operating system and there for don't have Python installed as per default.
However Java is needed on a lot of websites these days and is almost mandatory.
So the client side tend to use Java alot for different stuff.
On the other hand we have picked Python for the server side.

The only real downside that i see in Python is the fake threading.
I were about to argue furthur about why Java suck, Python is great and why we all live happely ever after since you threw a bounch of figures on me with a fancy dollar sign after.
But after all, i'm not here to pick on you nor the programming language that you or anyone else for that matter use.
We all got our different styles, i use Python. It's a fast development language, it's powerful enough to host my private operations for 115k peers/clients every day and small enough to fit in my back pocket.
I'd recomend C over Python any day but i'd recomend Python over assembly because you don't get very far with assembly these days without spending two years doing something with it.



Enough sad, Python rocks my socks. Java obviously floats your boat.

bani-banan
10-28-2008, 10:32 PM
As a pro python, here's the thread-closer:

http://www.arcanology.net/sticksandstones/comics/comic-10.gif

Over and OUT!

tokenuser
10-28-2008, 11:15 PM
I think that highlights the biggest problem with Python, without stong typing you are never going to be sure what you are going to get, or be sure that the expected i/o ports are are going to be compatible.

doxid
10-29-2008, 08:48 AM
I think that highlights the biggest problem with Python, without strong* typing you are never going to be sure what you are going to get, or be sure that the expected i/o ports are are going to be compatible.

You really are a simple minded person that's for sure.
In Python you have the option to take control over almost anything, or use the predefined classes that exist within Python.
Same goes for C++, C, Assembly (API) and a lot of other stuff.
Stop talking nonsense about "you can not be sure what you are going to get", cause you never know if you don't know shit about nothing. sorry for the harsh tone but dear frickin' Christ.
In Python i'm more sure what i get then in Assembly, and that's a bloody fact for sure. Python is dead on but has the option to be a flexible language of sorts.

Stop picking on the language when you're using Java -.- They are basically the same only Python is smaller and faster (in some ways).

rsone
10-30-2008, 01:19 AM
Stop picking on the language when you're using Java -.- They are basically the same only Python is smaller and faster (in some ways).
By the same you mean totally different ?

tokenuser
10-30-2008, 01:40 AM
You really are a simple minded person that's for sure.
In Python you have the option to take control over almost anything, or use the predefined classes that exist within Python.I think the biggest problem is that Python developers are so focused on defending their choice, that they have had their humour and sarcasm genes removed.