Jump to content
Objectivism Online Forum

Favorite Programming Language?

Rate this topic


Prometheus98876

Recommended Posts

OK all of you programmers out there: what is your favorite programming language and why?

As a student programmer, not having tried a great deal of languages to this date, I currently prefer C++, as I am coming to know this language in some depth, it is sufficently powerful and simple enough to learn, and fairly cross-platform. I like VB, its a nice way to make some Windows Applications, but not so great for making them in Linux.

I havent really gotten far into Java, so I cant say this is yet. Qt might be once I learn to code more than the absolute basics with it.

So at the moment I will say C++.

Link to comment
Share on other sites

I go with C++ myself. For speed and power, it's the best out there. I've done quite a bit of 3D graphical animation (using OpenGL and DX), and C++ is the language of choice for most programmers doing that kind of work, because if its speed and its power to organize data.

However, I try to learn languages with different strengths, so that I have tools to do a wide variety of jobs. With that in mind, I love Perl. Perl has two stengths:

  1. it's works across all platforms
  2. it has powerful string processing elements

Once you learn how to parse strings using it, it's a joy to use. I use it primarily for web based stuff.

I've learned Java as well, but use it almost never. I've never found it to be the best option for anything I've had to do.

Visual Basic is another fine choice. I find VB to be a powerful prototyping language. You can slap together a pretty sophisticated application very quickly. This is useful if your doing engineering work, for instance, and you need some utility to help you with your job. It's been several years since I've used it, but I understand now that they've gone to a more OO style, and that it's more difficult to use. Has it lost its simplicity?

FORTRAN... I'm not going to laugh, but the last time I used it was in university. I wonder how it compares to other languages for doing math. That's something I might look into.

Link to comment
Share on other sites

Don't laugh, but my favorite is FORTRAN. It's simple and many engineering aps are still written in it.

Actually even though I do not know any FORTRAN (and I do not foresee that I will ever have any need for it), this makes sense. I have heard it is simple, and if you do a lot of work with engineering applications it would be useful. If I ever do any computer systems engineering I might have reason to learn it.

How powerful would you say the language is?

Link to comment
Share on other sites

I havent really gotten far into Java, so I cant say this is yet.

C++ had been my favorite language too before I learned about Java, so you're on the right course so far. :D After I wrote my first program in Java, I never wanted to write a program in any other language. (Not a compiled program, anyway; I've written many shell scripts, Vim scripts, and the like where those were called for.)

Don't laugh, but my favorite is FORTRAN. It's simple

Oh, if you go for the simplicity, why not machine code? It only has 10 digits and 6 letters--can you get much simpler than that? :P

I think FORTRAN is simple all right, but it is important to distinguish between the simplicity of the language and the simplicity of the programmer's life!

Link to comment
Share on other sites

C, because I like to understand exactly why things work the way they work. Object orientated programming is another abstraction away from "the way the computer does things", hence why I prefer C to C++. This may change as I grow in experience, but right now I like the intimacy with the lower-level workings of a computer that C has. It also demands more of my mental faculties.

I'm currently teaching myself Ruby alongside C - it looks to me like the perfect OO language (absolutely everything is regarded as an object). I'll probably use it for coding GUI's.

Link to comment
Share on other sites

Object orientated programming is another abstraction away from "the way the computer does things"

You need to learn more about the nature of abstractions. :P

When I write my Java code, I can predict EVERY BIT of the action that my program is going to generate. Only I don't want to think of and code all that action bit by bit.

I grow in experience, but right now I like the intimacy with the lower-level workings of a computer that C has.

That's a good thing; I grew up on assembly myself (for the C64). <_< Nowadays, I like to study disassembled Java bytecode (which is even more closely related to its Java source than machine code to C!).

It also demands more of my mental faculties.

Isn't that a bit like saying, "I like to buy things at this more expensive store because it demands more of my financial capacity" ? :D If you have an oversupply of mental faculties, the solution is not to make your job artificially more difficult but to try more challenging tasks that also yield more!

it looks to me like the perfect OO language (absolutely everything is regarded as an object).

Your premise seems to be: "The more things a language treats as an object, the better it is." On that premise, the perfect language would indeed be the one that treats everything as an object. But should a language really be judged by the standard of how many things it calls an object?

Link to comment
Share on other sites

Don't laugh, but my favorite is FORTRAN. It's simple and many engineering aps are still written in it.
Simplicity could mean a couple of things. For some people FORTRAN has what they need, and nothing extra to confuse things. It's like a remote that only has the buttons that I need. It could also mean something else: additional complexity and power that is hidden from the user. The analogy would be that an automatic transmission is simpler than a manual one -- from the perspective of a user, not from the perspective of a car-manufacturer. If one wishes to use some of the libraries that are available for FORTRAN, it could be more powerful than other languages.

Libraries! But, that's not part of the language. One could write similar libraries in another language and get the same power and simplicity. True; but the same is often the case with (say) the ability to handle various programming tasks. VB.NET is good at "getting things done" more because of the whole environment: the language, the class libraries and the IDE. The language is really a small part of the equation.

I would put Java in the same league, with the following difference. With VB.net, the bulk of what one needs comes from a single company that puts it together in a useful way. In the Java world, you have to assemble stuff from all over (and adherent's will say that lets them choose "best of breed" tools). This means that in many realistic contexts one has to spend quite a while deciding on what combination of things is best, and assembling them together. High set up time. After that, its a breeze.

Recently, I played around with some PHP. Without the right set of tools, it can be a pain. However, with a good IDE, it can be a breeze. When one considers how much ready made code is available for it, it can be very "powerful".

Also, CF, when iouswuoibev, "it demands more of my mental faculties", he's talking about the fun part, not the productivity part. It's more fun doing things the hard way.

I use Java. For the work I do, I'd be happy using any other modern language that supports abstract data-types and sufficient mechanisms that allow "information hiding". For me, the key is the whole infrastructure of libraries and tools around the language itself.

The best book I have ever read on the topic of programming language design is "Principles of Programming Languages" by Bruce J. MacLennan. [Wow! It is selling used for under $1 on Amazon. I think I bought mine a year or so ago for almost $20 used.]

Link to comment
Share on other sites

You need to learn more about the nature of abstractions. :D

Why do you say that?

When I write my Java code, I can predict EVERY BIT of the action that my program is going to generate. Only I don't want to think of and code all that action bit by bit.
I'm interested in understanding a computer right down to the core. I don't like to take the operating system, API, coding environment, runtime environment etc. as the given, as something to just lean on and let it take care of me. I want to understand it, as fully as I'm capable of. I like to know my art/trade as fully as possible.

Isn't that a bit like saying, "I like to buy things at this more expensive store because it demands more of my financial capacity" ? <_< If you have an oversupply of mental faculties, the solution is not to make your job artificially more difficult but to try more challenging tasks that also yield more!

It's not like that at all. I want to improve my method of thinking, my organisational skills, etc. and C DEMANDS that I do this in order to code with it successfully. It demands strict, principled, rational programming conventions in order to prevent you from descending into chaos. If you only do this partially, or not at all, it's only a matter of time before your pragmatism catches up with you and kicks you in the rear. I know that if I can learn to handle C like an expert, and adapt it to dealing with almost any programming task confidently and quickly, I will be a much more able programmer in the long run. I will also come to appreciate that much more how the higher level languages are able to serve me better in certain capacities.

I think a similar thing can be said of Emacs - it's as useful as the knowledge of the person who uses it.

Your premise seems to be: "The more things a language treats as an object, the better it is." On that premise, the perfect language would indeed be the one that treats everything as an object. But should a language really be judged by the standard of how many things it calls an object?

No, it should be judged by what it can do for you (What you want a language to do for you depends on your individual goals). I like Ruby because it applies the same principle universally, so that I don't have to mentally switch contexts when trying to achieve different effects. I can't be more specific than this without going into details about the Ruby language (partly because I'm still a beginner at it) - suffice to say that each language is individual, and another language might also treat everything as an object but not be as well executed. All I can say at this time is that my cursory examination of Ruby impressed me a great deal.

Link to comment
Share on other sites

Why do you say that?

It seemed to me like you thought an abstraction was something bad--that only the concretes were the "real thing." If that was not the case, I withdraw my comment and apologize.

I'm interested in understanding a computer right down to the core. I don't like to take the operating system, API, coding environment, runtime environment etc. as the given, as something to just lean on and let it take care of me. I want to understand it, as fully as I'm capable of. I like to know my art/trade as fully as possible.

Yes, as I said, that's a very good thing to strive for; I think I wouldn't be as good a programmer as I am if I hadn't studied how a CPU works and how to program it directly. I first learned C64 BASIC (a rather high-level, "scriptish" language), then 6510 assembly, then C, then C++, then Java. In retrospect, I think this is a trajectory pretty close to ideal; I would recommend something similar to others. You're probably already familiar with an introductory language like BASIC, so low-level programming is actually the next step along my recommended path.

(If you thought I was arguing against your doing C, you've probably checked that premise by now. :D I'm just discussing your stated reasons for preferring C.)

It's not like that at all. I want to improve my method of thinking, my organisational skills, etc. and C DEMANDS that I do this in order to code with it successfully. It demands strict, principled, rational programming conventions in order to prevent you from descending into chaos.

Over time you'll come to realize that ALL languages do that. <_<

Link to comment
Share on other sites

It seemed to me like you thought an abstraction was something bad--that only the concretes were the "real thing." If that was not the case, I withdraw my comment and apologize.

Not at all. But Object Orientated languages are an abstraction away from the details of CPU operation, with procedural languages being a step closer. C forces you to think hard about how to accomplish certain tasks because of its low-level nature. For instance, you can encapsulate abstract data types and emulate an object-orientated environment (up to a certain point). I like to do things like this to gain an intimate understanding of the higher, more abstract methods that are taken for granted in higher level programming languages.

Over time you'll come to realize that ALL languages do that. <_<

Of course I know that - but I think C is more challenging than most. :D

Link to comment
Share on other sites

You dinosaurs... I'm all about the Visual Basic.Net! If you want to get close to "the way the computer does things," use assembly. If you want to get things done, VB is unbeatable!

Yes, while I realise that Visual Basic.NET is an important language, and one I should definetely master, you try writting a Linux/Unix/similar distrubution in VB! <_< I plan to do such a thing with VB and I think you might have just a couple of problems. C++ is what is currently used, so I should know this in order to study the OS source code (at least the stuff Im allowed to anyway). and then build upon it from there.

Link to comment
Share on other sites

I absolutely love programming in C++ :) I really like the multi-paradigm programming capability that C++ gives!

Java is fun, but personally not as satisfying as coding in C++. And as far as .NET goes, the more I learn about it, the more I like :lol:

I'm not the GUI kinds ;) Console based programming really gives me the kicks :)

All in all, if I were to migrate, .NET seems to be the likely choice for me!

Dinesh.

Link to comment
Share on other sites

I absolutely love programming in C++ :) I really like the multi-paradigm programming capability that C++ gives!

Java is fun, but personally not as satisfying as coding in C++. And as far as .NET goes, the more I learn about it, the more I like :lol:

I'm not the GUI kinds ;) Console based programming really gives me the kicks :)

All in all, if I were to migrate, .NET seems to be the likely choice for me!

Dinesh.

You like console based programming... that seems a little odd to me. At the moment as I do not know a lot of the stuff needed for efficent GUI programming most of my stuff (outside of VB anyway) is restricted to console applications and I do not much like this. They are ugly and not as useful as Windowed aps. But oh well, I guess I better learn more GUI programming.

Link to comment
Share on other sites

Your premise seems to be: "The more things a language treats as an object, the better it is." On that premise, the perfect language would indeed be the one that treats everything as an object. But should a language really be judged by the standard of how many things it calls an object?

Probably not, though there's a relatively new interpreted language called Ruby that's becoming popular for websites via a package called Ruby on Rails, because of how concise the code is compared to e.g. J2EE. Every element of the language is OO, including things normally considered as basic atomic elements in most languages (such as integers). I haven't used the language so I can't say whether this works well in practice, personally.

Yes, while I realise that Visual Basic.NET is an important language, and one I should definetely master, you try writting a Linux/Unix/similar distrubution in VB! :) I plan to do such a thing with VB and I think you might have just a couple of problems. C++ is what is currently used, so I should know this in order to study the OS source code (at least the stuff Im allowed to anyway). and then build upon it from there.

That might work in conjunction with the Mono project, which implements a fair bit of .NET in a portable way, including for Linux, though I haven't kept up on its progress. i.e., compile VB.NET on a Windows machine and run it on other platforms using Mono.

Link to comment
Share on other sites

That might work in conjunction with the Mono project, which implements a fair bit of .NET in a portable way, including for Linux, though I haven't kept up on its progress. i.e., compile VB.NET on a Windows machine and run it on other platforms using Mono.

Of course! I had forgotten all about Mono what with all the other stuff I have been involved in. After reviewing the current progress, I think that there is a lot of potential in the idea and it would be wise for cross-platform coders to follow this very carefully. Its a shame the offical online documentation is currently...well mostly non-existent.

Link to comment
Share on other sites

I am going to disagree with everyone and select Python. It is a dynamically typed interpretive language with incredible object support (everything is an object), yet also allows for procedural programming without the need for a single class. Further its C API is beautiful, anyone looking to reuse existing code or working on efficiency crucial applications can still do the top level coding in Python. And of course there are libraries for everything from writing polling servers, to engineering calculations, to database APIs.

--Tech Details--

The greatest part is that every single namespace is dynamic; they are just hash tables. You can modify classes, instances, and modules all at runtime. You can even access the execution frames and modify the global and local variables. This makes debugging incredibly easy.

Finally the code is aesthetically pleasing; which counts for a lot when you have to see it for 10 hours a day. The syntax is like English, and indenting blocks is mandatory (no braces).

Programming in Python is just good old fashion fun.

Link to comment
Share on other sites

Finally the code is aesthetically pleasing; which counts for a lot when you have to see it for 10 hours a day. The syntax is like English, and indenting blocks is mandatory (no braces).

Perhaps I'm just a dyed in the wool C++ programmer but that's the very part of Python that drives me nuts. Whitespace as syntactically significant? That's just annoying, to me.

Link to comment
Share on other sites

Perhaps I'm just a dyed in the wool C++ programmer but that's the very part of Python that drives me nuts. Whitespace as syntactically significant? That's just annoying, to me.

I understand that its weird, especially at first, but after some time I can't imagine programming any other way. I find it painful to see inconsistent indentation in anything else I have to work on.

Is there a powerful IDE that supports IDE, or is it more of a fun, "use your favorite editor" tool?

There are several IDEs that support Python, but I don't think they are needed. The Python interpreter can run in interactive mode(read/eval/loop), and it becomes just like a shell. You have full access to the language, including all namespaces, and can import and dynamically reload the code you are working on to test it while coding. Debugging is instantaneous without any compile time pause.

Plus IDEs are for the weak; anything that cannot be ran in a terminal is more distraction than tool. :) Anyone wish to fight over development tools?

Link to comment
Share on other sites

Plus IDEs are for the weak; anything that cannot be ran in a terminal is more distraction than tool. :) Anyone wish to fight over development tools?

I'm pretty old-fashioned. XEmacs and the GNU toolchain. But there's at least one guy in my group at work who puts me to shame -- he writes code in vi. Note, that isn't one of the enhanced versions like vim or elvis -- I'm talking bog-standard original v-freaking-i. I can only thing of two editors more hard-core than that. One is 'ed'. ("'Ed' is the STANDARD editor!"). The other would be:

cat > foo.c

...source code goes here...

^D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...