# Off-Topic Discussion > The Lounge > Tech Talk >  >  What's your favourite language?

## ninja9578

I'm curious.

I voted for C# (Cocoa) and BASIC, I HATE Java.

----------


## Ynot

ain't Cocoa objective C ??

----------


## bitness

You are definitely missing some languages on there.

Ruby, Python, Lua, PHP... etc...

Cocoa is actually an API to access OS X systems. Objective-C is separate, but commonly used next to Python for programming on OS X.

----------


## dsr

You're missing tons of popular languages e.g. perl, python, php, ruby, tcl, awk, lisp and its many variants, Haskell, OCaml, Objective-C, various shells, etc. By the way, C# has nothing to do with Cocoa (NeXT's/Apple's API for Objective-C). The main implementation of C# is part of Microsoft's .NET environment. Also, markup languages don't really belong in the poll because they aren't comparable to programming languages; the former specify a format and the latter are a series of instructions.

P.S. Certain programming languages are better for certain tasks, but I tend to use Python for anything that doesn't require the executable to be an opaque binary (and security through obscurity isn't a great practice anyway). By the way, ninja9578, is there anything specific that you dislike about Java? And probably a better question, do you actually know the language well enough to pass judgment? I can think of many Java annoyances off the top of my head but none that don't apply to Objective-C/Cocoa.

----------


## hopefullninja

I am pretty fluent in HTML and XHTML, and I am learning Javascript. I like Javascript more, you can do more with it

----------


## arby

My favorite language is english. But its obviously not yours. See, because you never said you were talking about PROGRAMMING languages!

But being serious, I quite liked Haskell. Twas refreshing.

But for simplicities sake, I liked plain old C. Although I haven't had much experience with its variants.

----------


## Nefarious

Assembly

Memory editing hacking games... just used it abit from tutorials for memory editors  :smiley:

----------


## ninja9578

Woops, Cocoa is objective C :-\

Dreamviews polls can only accept 10 different responses, I chose the most popular.  I should have added Python, but forgot.

My biggest annoyance with Java is lack of a (real) compiler.  I'd rather have to port a program for multiple platforms that have one slower app.  Java 3 (version ?) added a feature that fully compiles commonly used methods, but it is still largely virtual machine based.  That and the fact that the programs are HUGE.  I can write a program in C++ that compiles to 100KB that will compile to 500KB in Java, a C port would be even smaller and by far the fastest.  ("Bloatware" is one of my top pet peeves... 2GB for an office suite?  AHHH!)

Converting everything to big (little?) endian notation also bugs me since I do a lot of bit manipulation for speed purposes.

----------


## dsr

> My biggest annoyance with Java is lack of a (real) compiler.  I'd rather have to port a program for multiple platforms that have one slower app.  Java 3 (version ?) added a feature that fully compiles commonly used methods, but it is still largely virtual machine based.  That and the fact that the programs are HUGE.  I can write a program in C++ that compiles to 100KB that will compile to 500KB in Java, a C port would be even smaller and by far the fastest.  ("Bloatware" is one of my top pet peeves... 2GB for an office suite?  AHHH!)



That's not a problem with Java, just with Sun Microsystem's implementation. Check out the GNU Compiler for Java (GCJ) if you prefer to compile Java source code directly to machine code ahead of time.

----------


## Pyrofan1

C

----------


## Stalker

C/C++ with assembler in appropriate places. (Just finished optimizing an IDEA-implementation using SSE2, now that was fun.)

[edit]
ADDA? Never heard of, and I would think Ada would be more popular.
[/edit]

----------


## RooJ

> Assembly
> 
> Memory editing hacking games... just used it abit from tutorials for memory editors



Good old softice, ollydebug, w32dasm  :smiley: , I used to crack programs and games too (only as a hobby, never released anything), didn't do too much assembly, it was just basic code caves to output serials and change jumps etc, although i suppose you have to know a certain amount to follow the code.

My favourite is either VB because its so damn easy to pick up and use, and if you know what you're doing you can make some pretty decent apps with it... or C/C++ because I really like the languages and you can actually make decent crackme's with it, unlike with VB. Im a sucker for visual programming though  ::doh::

----------


## Adam

I can only answer HTML/XML/XHTML as that is all I know.

----------


## pj

Gaelic.

 ::D:

----------


## archdreamer

:O Where is the Common Lisp?

----------


## Ynot

> :O Where is the Common Lisp?



It'th mithing...

----------


## archdreamer

Haha I chuckled

----------


## Ynot

Favourite?
I'm most at home with C++
but for sentimental value - Sinclair Basic

----------


## pj

> Favourite?
> I'm most at home with C++
> but for sentimental value - Sinclair Basic



Man did YOU just date yourself.

Commodore Basic for me!

Punchcard FORTRAN, anybody?  Or (shudder) COBOL?

----------


## dsr

```
IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO-WORLD.
       PROCEDURE DIVISION.
       PARAGRAPH-1.
           DISPLAY 'Thou shalt never speaketh of COBOL. It is the work of Satan'.
           STOP RUN.
```


Oh yeah, as Stalker said, what the heck is ADDA?





> :O Where is the Common Lisp?



And what about Emacth Lithp? Ynot has a nice Scheme going ...

----------


## Ynot

> Man did YOU just date yourself.



I'm only 25
it's just the ZX spectrum was the only machine I had around during my childhood

----------


## Replicon

I believe in using the right tool for the problem. And yes, without the more scripty stuff on your list, you are greatly reducing your ability to efficiently solve certain types of problems :p.

As for Java being slow... unless you're writing a low level thing (like an OS, or a high-end video game), the "slowness" introduced by using bytecode/interpreter is negligible. If you write a service or web app that talks to a database, the network overhead and database calls are the limiting factor (and those are almost never implemented in java anyway). If it really is your java code that's slow, then it's probably bad code, and can be fixed by high level optimization.

----------


## Ynot

I think most people equate Java to slow, because of poorly written swing GUI's
(heaps of donkey work written directly into the GUI event handlers, meaning this donkey work ends up in the same thread as the GUI)

----------


## Replicon

> I think most people equate Java to slow, because of poorly written swing GUI's
> (heaps of donkey work written directly into the GUI event handlers, meaning this donkey work ends up in the same thread as the GUI)



That's probably it. The vast majority of my Java work has been either back-end stuff, or JSP, so I've very  seldom touched swing. That being said, the one school project I've used Swing for was really bad. A buddy and I did the backend portion, and trusted the other two to do a front-end framework to make hooking up this stuff really easy, and they fucked it up royally. Apparently, to them, copying and pasting 50-100 lines of code all over the place is acceptable *sigh*.

The Eclipse UI is written using swing, isn't it? That one's pretty reasonable.

----------


## dsr

> And what about Emacth Lithp? Ynot has a nice Scheme going ...



Ynot, you skipped over my pun!

As I said before, the Java language itself is not slow, but Sun Microsystem's implementation does underperform native code for most operations. Ahead-of-time compilers like GCJ solve the whole "virtual machines are slow" problem.

GUIs written in Swing tend to be less responsive than native ones because they take up a ton of memory and they don't use the OS's native widgets in order to be completely platform-independent. If you want to write a responsive but still highly portable GUI, check out the wxWidgets project. It's mainly for C++, but there appears to be a Java port. My experience with wxPython suggests that you'll write GUIs a lot faster than you will with Swing, but that might be due to Python's merits as opposed to those of wxWidgets.





> The Eclipse UI is written using swing, isn't it? That one's pretty reasonable.



That's because it's written in SWT, not Swing.

----------


## Ynot

> Ynot, you skipped over my pun!



don't worry, I saw it  :wink2: 





> wxWidgets



Yes, yes, yes
wxWidgets is used in Code::Blocks
(my IDE of choice)
and it's seriously good

Never used it in any of my stuff, so can't comment on it as a developer
but user-wise, you'd never know it was a x-platform GUI toolkit

----------


## thegnome54

Basic!! (Or at least the Ti83+ version of it) Haha, I'll never forget the days I spent in Algebra I teaching myself to program on my Ti83+!  I made some great games, pokemon, pearls before swine, mastermind, hangman...  

That's what made me love the programming challenge.  I took AP Computer Science two years ago and learned Object Oriented Programming in Java, but it was just too syntax heavy to flow as elegantly as the simple basic programming on a calculator.  In anticipation of the java fans - it's not that I didn't get it, I got a five on the exam.  It's just too unnecessarily picky for me.

----------


## ninja9578

> That's not a problem with Java, just with Sun Microsystem's implementation. Check out the GNU Compiler for Java (GCJ) if you prefer to compile Java source code directly to machine code ahead of time.



That's pretty sweet, I will be using that from now on when I have to use Java.  I've seen some real compilers for java before, but they gave me tons of errors and I didn't just them.  GNU I trust.



I meant Ada, it's an OOP language used mainly by the government.  It's syntax sucks:

with Ada.Text_IO; 
procedure Hello is
begin
  Ada.Text_IO.Put_Line("Hello, world!");
end Hello;

I've used it once and couldn't really figure it out.

----------


## Sornaensis

I program in C++ With the Dev-C++ Compiler, i have the 2005 Ex. Edition of Microsaft VB, i also have Darkbasic, and i make webpages for fun.

P.S. I HATE java  :smiley: .

Man, i LOOVE darkbasic, the syntax is so simple:

do
   Print " Hello World"
suspend for key


Or if you want a rotating cube:

Make object cube 1,1

do
position object 1,0,0,0
Yrotate object 1,1
loop

 ::chuckle::  making games and apps is a synch.

But i like to play aroung with C++ & make web browsers in V. BASIC.  ::D: 

Oh, and LOLcode is fun too, but... i'm not sure what it is dervied from:

Sample:

HAI

I CAN HAS STDIO?

      VISIBLE "Hello World"

KTHNXBYE

O wait, now that i think about it, it looks to be from C++.  ::lol::

----------


## Replicon

Not to be picky, but "Dev-C++" is not a compiler, it's an IDE.

Ever played around with Brainfuck? It's a fun little language.

----------


## dsr

> Ever played around with Brainfuck? It's a fun little language.



I was thinking the exact same thing at the mention of lolcode.

----------


## illidan

I'm just average when it comes to programming so I am no real expert on any language.

It's difficult to compare mark-up languages to programming languages so I'm seperating it.

My favorite programming language is probably C. It is short and pretty. I also know a bit of Basic, Java, and Objective-C.

My favorite scripting language is perl. It's so elegant. I also know a bit of javascript and a some basic shell scripting.

Mark-up languages: I know HTML, XHTML, and XML. My favorites are XHTML and XML. What I use obviously depends on the kind of document. I love standards. I always try to comply to W3C standards.

----------


## Replicon

> C [...] pretty.
> 
> perl [...] so elegant



 ::lol::

----------


## dsr

Yeah, I misinterpreted "perl [is] so elegant" to be a pun.  ::D:

----------


## Replicon

What are your thoughts on D?

----------


## M-Cat

> My favorite language is english. But its obviously not yours. See, because you never said you were talking about PROGRAMMING languages!



Oh my god, how witty. What an excellent, original joke.

----------


## Replicon

The problem with English is that it's not type-safe  ::D: .

----------


## Identity X

I'm surprised by the lack of support for C#, I haven't used it much, but I voted for it considering it is the best, most lucid realisation of what a programmer really wants that I have used. I'm most experienced with Java, but I do not recommend it over C# unless it can't be helped.

Also, so much for support for *BASIC? Given that you can do exactly naff all with it? Except the brilliant, late IdXLog ha ha

Also, HTML is out of place here. It doesn't do what the others do and it's not meant to.

Also, Ada, (not spelt ADDA, nor is it an acronym, it is named after Ada Lovelace, worlds first programmer and also a lady), is apparently completely flipping mental, so much so that it took years for a compiler to actually be written for it (long after the documents were realised).

----------


## TweaK

I miss stuff like PHP :/

----------


## dsr

> [C#] is the best, most lucid realisation of what a programmer really wants that I have used.



Would I be right in guessing that you've never tried Python? You can learn it in a day or two with Guido van Rossum's excellent tutorial, and I almost guarantee that you'll never go back to C# or anything .NET for the rest of your life.

----------


## Identity X

> Would I be right in guessing that you've never tried Python? You can learn it in a day or two with Guido van Rossum's excellent tutorial, and I almost guarantee that you'll never go back to C# or anything .NET for the rest of your life.



I've used Python a lot. I infinitely prefer C# for anything non-trivial. So much for the guarantee, eh?

Python has some nice things, but some utterly horrible things too: the "self" parameter comes to mind, and lack of even optional static types. 

Plus GUI building is obviously much easier in .NET

----------


## dsr

> I've used Python a lot. I infinitely prefer C# for anything non-trivial.



I'm shocked.




> So much for the guarantee, eh?



"_almost_ guarantee" ...




> Python has some nice things, but some utterly horrible things too: the "self" parameter comes to mind



Python treats bound methods just like class-level (as opposed to module-level) functions. What's wrong with _object.method()_ being a synonym of _Class.function(object)_? The explicit "self" parameter has the nice side effect (or main effect?) of forcing method calls within a class definition to use _self.method()_ instead of _method()_. C/f with a language like Java where the "this" keyword is often optional. The use of "self" is just one more aspect of Python that promotes consistency in source code---a big plus for "anything non-trivial" (your words) in which there is more than one programmer at work.




> and lack of even optional static types.



It's a dynamic language for crying out loud. Enter "python -m this" at a shell prompt and you'll be reminded that the Python philosophy is "There should be one-- and preferably only one --obvious way to do it." I don't think making Python a fusion of Perl and Java would be a plus for consistency. Besides, you should never need static typing in Python because the vast majority of your functions should be polymorphic, and those that are not will automatically raise a runtime exception if they are passed the wrong data. That's the beauty of dynamic typing. If you mean that there should be a Python ahead-of-time compiler for distribution (in which optional static typing would have some pluses), I agree. But until someone writes it, I'm happy with the status quo.




> Plus GUI building is obviously much easier in .NET



Compared with Tkinter, perhaps (I have no experience with it). Compared with wxPython or PyQt, I must disagree.

----------


## Identity X

> What's wrong with _object.method()_ being a synonym of _Class.function(object)_?



I don't like it, because it turns encapsulation on its head. Encapsulated methods become special-case static methods instead of just encapsulated methods. It doesn't make sense. What's wrong with "encapsulated except where static"?

Also, since Python is interpreted, everything needs to be written "in-order"... I'm used to sticking anything everywhere. I like writing the main functions of a class before the auxiliary ones, for instance.

----------


## dsr

> I don't like it, because it turns encapsulation on its head. Encapsulated methods become special-case static methods instead of just encapsulated methods. It doesn't make sense. What's wrong with "encapsulated except where static"?



Python's double underscore name mangling is enough in the way of encapsulation for me. Unless I am misunderstanding you, since the programmers still call methods in Python by the usual _object.method()_ syntax, the only oddity with which one could fine fault is the explicit "self" parameter. See my last post for more on this.





> Also, since Python is interpreted, everything needs to be written "in-order"... I'm used to sticking anything everywhere. I like writing the main functions of a class before the auxiliary ones, for instance.



Actually, the very opposite is true. Unlike some static-typed languages that require either "in-order" definitions or prototypes (e.g. C), Python allows you to define functions and methods in whatever order makes the most sense to you.

----------


## Jeremysr

I use PHP for websites, C and Lua for Nintendo DS programming, and Perl for "quick" programs on my computer...

----------


## TweaK

Oh you do NDS programming eh? How do you get it on your DS? Do you have a flash cart and a PassMe device et al? I found all that to be a bit of a bother really.

----------


## Jeremysr

Well that's how I used to have to do it but now there are slot-1 cards that don't use PassMe's and don't stick out of the DS.  ::D:

----------


## TweaK

Like EZFlash V + 3-in-1? I just ordered one of those a couple of days ago. I will use it for ROMs I downloaded illegally mostly, hardly homebrew I would not dare to ever do something illegal with it like downloading ROMs, though!

Also, how hard is DS programming? I think it'd be kinda fun to do. I know a bit of C++, though nothing extensive. C and CPP don't differ that much.

----------


## Replicon

Aren't console dev kits extremely expensive? (unless this isn't a full-blown devkit, and was planned as part of the perks of the DS)

----------


## dsr

> C and CPP don't differ that much.



They sure do if you use each properly. While C++ maintains backwards compatibility with many features and language constructs found in C, C++ programmers don't (or certainly shouldn't) do things the C way. For example, C++ programmers use the STL whenever possible. They use vectors and lists instead of C arrays, std::cout and std::cin instead of puts and gets, etc. Besides, C++ programs are usually object-oriented, which makes them very different from C programs. Also, C++ allows generic typing for better code reuse, exception handling for better readability and fewer bugs, and a bunch of other features.

----------


## TweaK

Right, but we're talking VERY in-detail here. Generally seen, they're very much alike.

----------


## ninja9578

Syntactically and in terms of the compilers they are similar, C and C++ aren't even close to being used the same way.  The simple fact that C++ is OOP changes the way that it is used.  C is mainly used for very fast, low impact programs (operating systems, graphics...) and C++ is used for larger projects that need more organization and speed and footprint don't matter as much (apps.)

----------


## Hazel

I put HTML because at the moment that's the only one I'm basically fluent in. I am starting to get pretty good with CSS and Javascript, though. (I haven't even heard of a lot of the ones on the list, that just goes to show I've got a LONG way to go before becoming a webdesigner.)

----------


## dsr

> C is mainly used for very fast, low impact programs (operating systems, graphics...) and C++ is used for larger projects that need more organization and speed and footprint don't matter as much (apps.)



Well, C _is_ used for programs or the portions of programs that require maximum execution speed, but so is C++. OOP might cause programs to consume a little more memory than the procedural paradigm does (I don't know that for a fact, but I take your word for it), but C++, as with C, is mainly used in performance critical domains. With a good STL implementation, you'll find that C++ code (that uses the STL when it can) will often run faster than equivalent C code where reinventing the wheel might be more difficult to do efficiently.

----------


## Jeremysr

> Aren't console dev kids extremely expensive? (unless this isn't a full-blown devkit, and was planned as part of the perks of the DS)



I use devKitPro which is free and used by homebrew coders. Apparently they figured out all the DS stuff themselves without stealing any code.





> Like EZFlash V + 3-in-1? I just ordered one of those a couple of days ago. I will use it for ROMs I downloaded illegally mostly, hardly homebrew I would not dare to ever do something illegal with it like downloading ROMs, though!
> 
> Also, how hard is DS programming? I think it'd be kinda fun to do. I know a bit of C++, though nothing extensive. C and CPP don't differ that much.



If you use PAlib it's *real* easy to program with. Otherwise there's libnds which is a little harder but I can't say much about it because I just started using it a few days ago. :p

----------


## TweaK

So what device setup do you use, hardware wise?

----------

