Jump to content
IGNORED

Programming Languages


Guest Wall Bird

Recommended Posts

Guest Wall Bird

What are the differences and advantages between the many popular programming languages?

 

This is a broad, open, question that is not easily answered by any single reference. WATMM seems to have it's fair share of computer programmers who are seasoned and familiar with many languages, so I wonder; what are the applications best suited to specific programming languages?

 

For example; what are the differences in style and use of Lisp and Pascal?

 

What is the difference between C, C++, and Objective C?

 

What dimensions are there to consider when settling on coding in a particular language? Characteristics like flexibility, elegance, power vs. control, simplicity, compatability, etc.

 

Programming is something that I've been curious about for a while and I am trying to get a feel for the field.

Link to comment
Share on other sites

Hard question. this is a forum, not a dissertation.

 

The wikipedia entries on various languages are usually good at describing their fundamentals

 

edit ... ok, I'll give it a shot.

 

Broad families of languages:

 

You've got your old-school pre-object procedural languages (variables, loops, if statements, functions, procedures):

 

fortran, basic, c, pascal

 

then Smalltalk (a language and a platform combined )came along with a load of ideas about objects.

 

This led to Object oriented languages (they all have classes, inheritance, etc), some that were new and some that were variants of the old procedural languages:

 

c++, objective-c, java, c#, visual basic .net (just scrapes onto the list), delphi (object pascal), ruby (I think?)

 

mroe scripty ones can also be lumped under the object oriented group:

javascript , php, perl, python

 

Then, completely separately, you've got languages that are not based on the procedural or object parasigms:

 

prolog (rules processing), lisp and scheme (functional - 'everything is a function'), Mathematica (symbolic processing)

Link to comment
Share on other sites

Guest hahathhat

C forces you to think a bit like a computer...

C++ is a bit abstract(ed)...

never used objective C, that's iphone right?

Link to comment
Share on other sites

Maybe you could give a random scenario that you would need sorted out and you may get a few ideas to the awnser to your query. Giving you a more in depth view of what does what.

Link to comment
Share on other sites

Guest Babar

C forces you to think a bit like a computer...

C++ is a bit abstract(ed)...

never used objective C, that's iphone right?

 

i'm seriously digging objective-c. It looks a lot like java and probably like C++ (class-based + feature-based ontology). To me java is like a tree : boxes inside boxes while objective-c is more about connecting modules. That's because objects can live outside of the object paradigm (thanks to its implementation of C). The object machinery is also more accessible. You can redefine the way messages are forwarded between instances and you can inject new methods into existing classes (without extending them). And the cocoa api is well designed. It's like using an iPod.

 

 

To the OP: start with java though.

Learning a language is usually easy, it takes around 2 weeks or so.

Link to comment
Share on other sites

C forces you to think a bit like a computer...

C++ is a bit abstract(ed)...

never used objective C, that's iphone right?

 

Objective C is what you use if you are developing software for Apple devices, not only iPhone.

 

Cocoa, Apple's umbrella term for their collection of frameworks (and Cocoa Touch for iDevices), is heavily relying on ObjC features. Aside from Apple devs, probably nobody else is using ObjC. So basically Apple are free to develop the language and Cocoa in parallel, which yields a smooth and clean synergy between the two. The frameworks are built to take advantage of dynamism and are of high-level design, and the language syntax and feature set supports these concepts very well. Which differs from C++ a lot.

 

It's also a strict superset of C, so you can just use C in your code whenever you need/want to program closer to the chip. You can also freely mix Objective C with C++, if you want to have C++ features such as operator overloading. You can have ObjC classes with C++ members for instance. You'll want to use C or C++ to for performance critical tasks such as audio processing or OpenGL graphics in most cases, since the dynamism of ObjC gives a bit of a performance overhead in certain things such as method calls (which are called message dispatch because they are resolved at runtime entirely).

 

So in conclusion, it's a great language imho because it itself has features that make high level programming very comfortable, and it can seamlessly scale towards C++ / C where you want to lick the metal.

Link to comment
Share on other sites

All popular programmings languages look like Algol with a half-assed type system that can't even do things like polymorphism and inheritance right. All the differences are superficial, really.

Link to comment
Share on other sites

in the end all general purpose languages are equivalent in terms of what you can do innit.

So Scheme is kind of interesting for its simplicity, though there has to be reasons why it's not at all used in software development. Is it because of the (((parentheses)))))))))((((())))()())?

Link to comment
Share on other sites

Guest hahathhat

oh, i don't really know scheme. i had to do something in it many years ago for a school project. it's a "functional" language, as opposed to "procedural." C/C++ are procedural, in that they have variables, state, etc. a functional program, on the other hand -- calling the same function with the same arguments should always result in the same result, i think. in practice, it's just a mindfuck of nested recursion. largely used in academia, rarely seen making any money. it's lovely if you're into comp sci, but it's also an easy punchline. like: "they teach scheme first at MIT, because if you can write it in scheme, you can write in any language." because it's such a brainfuck. esp. if you're used to procedural programming.

Link to comment
Share on other sites

i think they used to teach computer science to 1st year students at MIT using Scheme, but that was in the 80s. There's this famous lecture series: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/

I watched it because i had read somewhere that Scheme/Lisp was special because "everything, down to the primitives and operators, could be expressed using functions in the same language, and that's the real deal", at least that's what i thought Scheme was about... this statement is probably not even true..? but couldn't be arsed to explore it more deeply. The lectures are still interesting at least from a historic pov... nowadays MIT are teaching the same classes using Python if i'm not mistaken, and the point is still the same i guess: making the process of creating complex software by flipping bits comprehensible to students. Scheme (and apparently Python) seem to be suitable to deliver certain points...

 

there's also this programming environment called impromptu, using a Scheme implementation: http://impromptu.moso.com.au/

I'd want to play with it if it had less parentheses. :emotawesomepm9:

 

calling the same function with the same arguments should always result in the same result, i think.

 

yeah basically the function "+" will add two numbers, donkeys, planets or whatever you bother to recursively implement :braindance:

but you can do that in C++ too.

Link to comment
Share on other sites

Guest Wall Bird

What's the deal with Lisp? What sets it apart from other languages?

 

Is it ever favored in any particular fields? As I understand it, Lisp is incredibly flexible and easy for coding new solutions on the fly, allowing you to make very large strokes and invent create tools as you require them. Is this accurate? Are there any huge hangups one should know about before pursuing this language?

Link to comment
Share on other sites

Guest hahathhat

What's the deal with Lisp? What sets it apart from other languages?

 

Is it ever favored in any particular fields? As I understand it, Lisp is incredibly flexible and easy for coding new solutions on the fly, allowing you to make very large strokes and invent create tools as you require them. Is this accurate? Are there any huge hangups one should know about before pursuing this language?

 

lisp is also a functional language. lisp is scheme's daddy, i believe. interesting but impractical (for most of us)

Link to comment
Share on other sites

Guest Wall Bird

Why impractical? Is it because there is no demand for it as a skill set in a group working environment and generally only useful for private projects?

Link to comment
Share on other sites

What's the deal with Lisp? What sets it apart from other languages?

 

Is it ever favored in any particular fields? As I understand it, Lisp is incredibly flexible and easy for coding new solutions on the fly, allowing you to make very large strokes and invent create tools as you require them. Is this accurate? Are there any huge hangups one should know about before pursuing this language?

 

Lisps mostly used in AI fields. Never programmed in it myself, but programmed lots in PROLOG instead (literally you're programming in propositional logic). Which is similar to the extent that you solve problems by programming in recursive functions. This can be massively fun after you've passed the initial brainfuck stage. The reason why these 'recursive' languages can be preferred over normal procedural languages stems mostly from the way it represents a solution for a problem. In these recursive languages you're basically writing proofs. You define a couple of premisses and a function from which all possible answers can be deduced (recursively). So instead of writing out the entire procedure, you only have to define the rules by which a problem needs to be solved.

 

And as to why lisp and prolog are impractical (apart from performance issues): in practice a "proof" for a problem is 1. very rare (if it exists at all) 2. uninteresting from a non-academic point of view.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • 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.