Jump to content

Popular programming languages


weknowthewor

Recommended Posts

Can you tell us more about what it is that you'd like to accomplish? Is your goal more along the lines of learning the fundamentals of programming, or are you most interested in getting some kind of specific applications up and running quickly? It's perfectly fine if it's something in-between, but that would help us tive you the best answer. :)

Link to comment
Share on other sites

I think dynamic languages with interactive environments are a great way to start out. This includes pretty much any functional language you can imagine, e.g. Lisp, ML/CAML/O'Caml, Erlang, and to a lesser extent Python and Ruby (Haskell may have one too, but I haven't really used it) Other languages like Smalltalk have interactive interpreters as well.

 

Of all the languages above, I'd suggest Python or Ruby (and personally I favor Ruby) since they have the largest communities.

 

Starting functional is a great way to get yourself thinking about programming. If you start with a clunky procedural language like BASIC, you're going to have to unlearn a lot of bad habits before moving on to a better language. If you start functional then move on to procedural languages, you'll witness what Paul Graham calls the "Blub Paradox" firsthand, namely that procedural languages will feel clunky and cumbersome in comparison.

Link to comment
Share on other sites

I always recommend java as a good learning language. You can do lots of powerful things with it, and it teaches Object Oriented Programming practices.

 

Also, the language is pretty clean, and the various libraries that come with it have very good documentation.

 

While being very object oriented, it also allows for real primative datatypes, so you don't end up with a big bulky object for every boolean you create.

 

You can get into some more complex concepts with it, such as multi-threaded programs.

 

Once you know java really well, I think C++ is the best language there is to get into. I am yet to find any concept in a language that is not already covered in C++ (templates, pointers, references, memory management, threads, multi-inheritance, etc) that is not trivial.

 

In other words, if you can master the concepts in C++, you can master the concepts in just about any language. (Although if you get into SQL for databases, you should learn a lot of database specific concepts for optimization for that language and relational databases in general).

 

I wouldn't attempt C++ without a very strong background in programming already though - its not a beginner's language. Java is very similar to C++ in terms of syntax, and a very good language to start with IMO.

 

 

Side note: As far as languages I've used professionally, I only really have experience in C++, java, javascript, visual basic, coldfusion, perl, php, and sql. I don't know much about ruby/python etc.

Link to comment
Share on other sites

Where I started school c++ is the main language you learn, and the first class you take is all about it :P

 

There's a big difference between trying to teach yourself a new language as a programming newbie and enrolling in a class at a school with a structured curriculum.

 

A trained instructor will help you with many gotchas you'd never likely see yourself. For the self-taught approach other languages are probably a lot better to start with, imo.

Link to comment
Share on other sites

As far as C++, C# and Java go, Java is probably the easiest to learn :cool:

 

If you want to teach yourself, buying a book is probably the best thing to do. You could look stuff up on the internet, but there's just so much information out there for a noob. I'd buy a book, then look on the internet for extended resources. There's also video tutorials online that can be very helpful.

Link to comment
Share on other sites

hi

you can read abt programming languages in uni sites such as mit open university and other university's programming departments and your choice depends on your application.

but c++ , java are powerfull and if you want solve an articial intelligence problem you must study abt and use prolog language.

Link to comment
Share on other sites

I agree with those who said java is a good language to start. For example I just started learning java just few weeks ago at school. Good thing is that even with basic knowledge (boolean logic and "if" statements) you already can do a lot. For example right now I am making a text RPG game, which is pretty much like any real videogame, just without graphics and not as long. Next semester I will learn C++

Link to comment
Share on other sites

I wouldn't recommend Java. For one thing, the primitive types aren't first-class objects. They're weird. There are first-class objects you can use to represent the primitive types, but they're immutable.

 

This is all a throwback to C++, but it gets in the way all the time. For example, in order to store a number in a data structure, you first have to wrap it in an object, since it isn't a first-class object and therefore can't be treated like other objects.

 

Imagine you want a data structure which stores mutable integers. You're kind of SOL with the classes available to you in the class hierarchy. You're basically stuck building your own mutable wrappers for integers.

 

The fun continues: There's no operator overloading! So what in a sensible language would be:

 

hash[key] += 1

 

Becomes the following in Java: (and you have to implement MutableWrapper yourself!)

 

v = (MutableWrapper)hash.get(key);

v.set(v.value() + 1);

Link to comment
Share on other sites

I wouldn't recommend Java. For one thing, the primitive types aren't first-class objects. They're weird. There are first-class objects you can use to represent the primitive types, but they're immutable.

 

This is all a throwback to C++, but it gets in the way all the time. For example, in order to store a number in a data structure, you first have to wrap it in an object, since it isn't a first-class object and therefore can't be treated like other objects.

 

Imagine you want a data structure which stores mutable integers. You're kind of SOL with the classes available to you in the class hierarchy. You're basically stuck building your own mutable wrappers for integers.

 

The fun continues: There's no operator overloading! So what in a sensible language would be:

 

hash[key] += 1

 

Becomes the following in Java: (and you have to implement MutableWrapper yourself!)

 

v = (MutableWrapper)hash.get(key);

v.set(v.value() + 1);

 

I disagree I think Java is a great language to be taught to people as a first language, I don't have time to go into my points right now though.

 

Here doing physics the first proper language (other than evil matlab scripting stuff) that people are introduced to is C and I just don't think it should be being taught to people. Although their excuse is that alot of sciency apps use it :@

Link to comment
Share on other sites

according to an old man who stands infront of me and talks to for 3 hours every wednesday Java is the future of programming . . . though i hate it, not sure why but I find C easier. Igonore C++ its just Java with a silly hat on.

 

But that could be becuase i've been using it for 3 years, and spent only 3 months trying to learn java (on and off i'm not just stupid!)

Link to comment
Share on other sites

I think it's better to start off with a higher level language then work your way down. The problem with Java is that the core of what you're trying to do (such as in the example I gave) is lost in overly verbose and often unreadable syntax. hash[key] += 1 is clearly readable and explicit.

 

This sort of mentality is deeply rooted in Paul Graham's "blub paradox": a programmer familiar with higher level languages can always step down to blub, but it's much more difficult for the blub programmer to step up, because they're still thinking in blub. There's an adage to the effect of "You can program Fortran in any language" which embodies that idea quite nicely.

 

I guess above all else: I'd avoid a language with static typing to start out with. Static typing is great for building complex, enterprise caliber software using large teams who communicate primarily in the form of API documentation, but for someone who's just jumping into programming, a dynamically typed language will be much friendlier and more intuitive.

Link to comment
Share on other sites

Interesting points.

 

One thing we kinda have to keep in mind (as this question keeps coming up in ScienceForums) is that there are different kinds of beginners. I work with true beginners -- kids and adult career-changers who know literally nothing about programming and often aren't really motivated to learn more -- they may be more interested in database or network administration type work. This is a dilemma for educators, because good curriculum could inspire a great programmer to emerge out of someone who didn't realize it was something they could do.

 

The school used to use Visual Basic, not so much because it's a better language than anything else for beginners (it's just as arcane as anything else, IMO), but because they had a plethora of educational materials (read: "textbooks") to choose from.

 

But recently we've started using something called "Alice", which is an open-source, natural-language processor that's actually intended to be used primarily as a 3d authoring system for game worlds. We found a great textbook that focuses on using Alice as a tool for learning OOP concepts (by building simple but interesting 3d environments), and I think it's very effective. After all, what motivates beginning programmers the most is when they see their programs come to life due to their own efforts, and Alice does that really well.

 

And it keeps students off the Microsoft teat a little longer in the bargain. Which is especially good because after that they go through a couple quarters of VB, then ASP.NET. Then they graduate. Hopefully able to do a loop and use an IF statement. Maybe. But they're not CS majors; they're IT majors. They just need a "familiarity" with programming concepts. We may not get these guys much past simple programs, but hopefully we lay a foundation and give them a chance.

 

I think most of our members here at ScienceForums start at a little higher level and have loftier goals than that. But it's possible some of our visitors could benefit from something like Alice as well. It's hard to say because we just have no idea what level people are at when they show up and post here. So I may toss out the Alice suggestion as well, in future threads like this.

 

It may sound silly, but I'm a firm believer that the greatest programmer in the world could very well a 57 year old plumber in Hoboken who's never touched a computer in his life. Giving that guy a chance is what makes my job fun.

Link to comment
Share on other sites

  • 2 weeks later...

Years ago when I was into computer science I was learning java and ada95. I thought both of those languages were very nice, nicely laid out and had a large variety of support in terms of software to aid in programming, java more so, and java also has a large community of people that use it. Java also would probably be the best simply because you can program for some many different environments with it, chiefly personal computing to the internet.

Link to comment
Share on other sites

I think most of our members here at ScienceForums start at a little higher level and have loftier goals than that. But it's possible some of our visitors could benefit from something like Alice as well. It's hard to say because we just have no idea what level people are at when they show up and post here. So I may toss out the Alice suggestion as well, in future threads like this.

 

alice is designed for 5-year-old girls

 

I know this 'cos i played with it, having heard it was designed for entry-level programmers. the interface is pink :D

 

still, i can see your point... i recognised the very basics of programing in alice that i'd just learnt from python. it might be worth, if you recomend it, mentioning that it's designed for young girls and not to be put off by the pinkness and the fwuffy bunnies.

 

I'm by absolutely no means a programer, but one thing that helped me pick up the basics of python quicker was a (very) basic competence in html. it gave me a feel for programing without actually being as complicated, and let me play with tiny nuggets of code (javascript). plus it doesn't require learning how to use anything complicated, just a simple text editor and a browsser.

 

just thought i'd mention that from a beginners pov.

Link to comment
Share on other sites

Python is very good for starters. It has a simple syntax and you can't fry a computer with it easily.

 

I'll second Python. Hell, I'll second anything with an interactive environment.

 

If you can get into an environment and start using it as a basic calculator, it goes a long way towards getting you comfortable, and that's half the battle.

 

Any language where you can't do anything except from a file you've written to disk seems rather unfriendly to me.

Link to comment
Share on other sites

I think once you get a little bit used to thinking like a programmer it's not hard to learn new languages. There is a jump from the old functional programming to object oriented programming, but I don't see why you couldn't practice both.

 

I started programming when I ran into the limitations of my programmable pocket calculator. I first learned quick basic, and then turbo pascal on my first computer because those were the only compilers I owned and could practice with. Then during the programming courses I happend to be in the year when they changed the "first language" from pascal to C++. So oddly, I got the first semester in pascal, and the second follow up semester in C++. A bit odd, but that wasn't a big problem.

 

Maybe it depends on what you intend to do? Are you doing database programming, web development or are you implementing heavy numerical routines?

 

These days for light stuff I still VBA. Excel and VBA are my "pocket calculator" these days. I rarely use pocket calculators anymore. But for anything more advanced you need efficiently compiled code. For this reason I'm not much of a Java fan either. But it was several years ago I worked on this, I am not sure if the java engines has improved. But the last time I worked with it, the performance sucked.

 

My limited experience is that the cumbersome parts of programming doesn't have much to do with the language, it's the complexity of the function or class library.

 

/Fredrik

Link to comment
Share on other sites

I know many programmers who got their start with Excel VBA. I used to teach loops and IF statements to crowds of accountants with Excel experience, a certain percentage of which always found it intriguing and went on to learn more about programming. It's interesting how people come to programming from different directions.

Link to comment
Share on other sites

There is a jump from the old functional programming to object oriented programming

 

I think you're confusing "functional" with "procedural". Object oriented and functional concepts can be used side by side in the same language. There are many languages built around a functional OO paradigm, such as O'Caml, Python, and Ruby. Functional and object oriented programming actually go quite well together. In functional languages where objects are the intrinsic primitive, functions just become first class objects.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.