|
What do you think the best programming language is? |
|
It depends on what you are trying to do, and what language(s) you already know. I will try to provide some specifics. General web or application development, Java and C# are pretty good, that they have some powerful constructs (classes, interfaces, a variety of loops, switch/case (effectively a set of if elif elif ... else statements)), but have some safeguards against programmer mistakes. |
|
All programming languages are terrible. All code is ugly. The best programming language hasn't been invented yet - it's the one where I don't have to type anything and the computer does exactly what I want. Every programming language until then is an incremental step towards that goal - making it easier for me, the programmer, to get what I want, and harder to shoot myself in the foot. That said, I like Lisp, Python, and semicolonless JavaScript. There is such a thing as semicolonless JavaScript? That sounds very pleasant indeed! 1
@Eternal_Decree It's just a coding style. JS can be written almost entirely without semicolons. You need to know what you're doing, but not actually any more than you need to know what you're doing to use unnecessary semicolons in JS. You just need to prefix a line with a semicolon if it begins with [, (, or a unary operator, and know what "restricted production" means from the spec. The semicolon in JavaScript is a statement separator like in Python rather than a statement terminator like in C. And it works even better along with the comma-first style. 1
For javascript that is very similar to python (no semicolons, among other improvements), see http://coffeescript.org/ |
|
This is my real answer to the OP's question. My other "answer," about my interview, was for comedy relief, yet it also made a point. That point may be lost on some. If you read that, and you're sympathetic to the interviewer, just wondering, "So which one is best? Just give up the answer already!" ... then you definitely missed the point. Let me try this way. Chuck Yeager is a very famous American pilot. He was the first person to fly faster than the speed of sound, among many other accomplishments. He was one of the main figures portrayed in the book and movie, "The Right Stuff." He's a legend as a great pilot. Well into middle age, he was still flying practice dogfights with top, younger pilots in the Air Force. But he didn't fly the latest, greatest, most advanced fighter jets for that, like the young ones. No, he flew Air National Guard planes, which were older generation, less advanced, and considered obsolete. On paper, the newer planes were invincible to the older planes of lesser capability. Nevertheless, Yeager routinely and consistently beat the young pilots. The experienced pilot in the old plane always "waxed the tail" of the young pilots in the newest planes. It's the same with programming. The programmer is MUCH more important than the language. An experienced, top programmer using old, "obsolete" tools and languages will run rings around many younger ones sporting the latest, trendiest, supposedly most advanced language. I have personally seen this. In real life. It's a fact. Believe it or not. So why does this infernal question, "what's the best language," keep coming up, over and over and over? Ever since the second language was invented, and there was a choice to make, programmers have been asking this question. Why keep asking, if it's not that important? I think there are two reasons: 1. The mistaken belief that the question is answerable, like a multiple-choice test (it isn't), and 2. Insecurity. The insecure programmer, whether student or professional, seeks the easy way out, the magic silver bullet, that will guarantee good grades or job offers or career advancement, without a lot of effort. Those with experience eventually get over both errors. Experience, as I mean it here, is not a function of years or age, but of challenges encountered and knocked down. At least, that's my theory. I may be wrong. However, that theory has consequences. For one thing, when I hear a programmer getting hung up on this age-old question, trying to find "the" answer, that's a huge, flashing neon sign to me, saying "inexperienced." And that affects decisions I make. I'm going to let go a big, big secret here. As someone who has interviewed and hired programmers, I myself have been the interviewer asking, "What do you think the best programming language is?" Those who have a quick answer, and can explain in detail why their answer is correct .... are wrong, and are not hired. I'm looking for people who understand the fallacy of the question, and can explain THAT point. By the way, Chuck Yeager is said to be able to fly any plane ever made. Programmers should aspire to the same -- to be able to use ANY language necessary. That's why I'm older, with numerous languages under my belt (more assembly languages than I care to remember!), yet here I am, in a so-called beginner's class, to learn Python, and find out what else is new .... or what's old that I've forgotten! I've been in this conversation face-to-face with aspiring programmers, so I know EXACTLY how some of you will react. You think I'm an arrogant old so-and-so, and you're much smarter than me, what do I know, etc. You will blow off what I just said. But, again, experience is not about age. A 20 year old may have figured it out, while some retiring programmers never do. I just gifted you with something: the closest you'll get to that magic bullet you're looking for, and that's the truth. You just want to know what the best language is, so you can focus on that, and not waste time on everything else, and oh, what fools the rest of them are for not doing the same! But I'm here to say that entire concept is wrong from the start. The truth is, learn everything you can, never stop learning, and do the best you can with every assignment that comes your way. That's the magic secret. There IS a related question that you should always ask, and answer. That is, "What's the best language (or development environment, or editor, or framework, or testing tool, or version control, ... etc.) for THIS particular problem, in THIS place, on THIS day, with THESE people, given THESE requirements?" That's always answerable (maybe not clearly, or unequivocally, but you can always answer it). And it's always part of your job, if you have any say in the matter. You always want to pick whatever helps you do the best job, keeping in mind costs such as learning time. Sometimes the right answer is to pick what you already know. But the answer always depends on the specifics of the situation. There is NO general answer! Another related question is, "What's the best language to get a job?" That's a legitimate question, but not what I'm talking about here. That answer also depends on lots of variables, but it's a different question, different issue, and different possible answers. I have a vested interest in getting my point across: it's really, REALLY hard to find genuinely good programmers. I wish there were more. If you're not already one, I wish that you WILL be! Very, very good. I applaud. @JohanG, thank you for your comment and graciously sharing extra points. I believe I will pass them on to others. |
|
According to Learn Python the Hard Way,
|
|
(best recollection of an interview from about 20 years ago) INTERVIEWER: What's the best programming language? ME: Um, uh, well, there isn't really any that's the best. It depends on the application, the team, all sorts of things. They all have pros and cons. INTERVIEWER: Yeah, yeah .... but which one is best? Can't you be specific? ME: Uhhhh ... well, C is good for lots of things. For example, a microcontroller running an appliance or something. But if you got a million lines of old code in COBOL, running some big business on a mainframe, then COBOL looks pretty good for that kind of work. But -- ha-ha! -- you wouldn't want to use COBOL on a microcontroller! (grinning) INTERVIEWER: I hear ya. Yeah, COBOL sucks. So which one do you think is best? ME: (several seconds of silence) ... Um ... well .... I guess ... what did you say your department was using? Pascal? INTERVIEWER: Yeah, don't get cute. We already know Pascal is good, so don't say Pascal. What would YOU pick as the best one? ME: Uh, I've used several. It usually depends on what's available and gets the job done. I did a thing in Fortran once for a civil engineering professor. Bunch of finite element analysis. INTERVIEWER: Oh, OK ... Fortran (starts writing that down). ME: No, I didn't mean Fortran is the best. It's what the guy wanted, and it was fine for the job, so I did it, and it worked. INTERVIEWER: (frowning) It's not a hard question. Everybody I've ever interviewed answers it in 5 seconds flat. ME: Uh ....... INTERVIEWER: (looking at my resume) I see you list BASIC. Several different things here .... is that your best language? ME: I wouldn't call it the best language ... it had its uses. QuickBASIC was a pretty decent compiler, user-defined types and stuff ..... oh, uh, you mean, is it the one I know the best? INTERVIEWER: (rolls eyes) Which language do YOU think is the BEST one, OK? ME: Um, yeah, OK. (spin wheels for a few seconds) ... I would ask about the team background, the specs, what's already in use and what you got licenses for, what libraries are available, what else the system needs to interface with, then say, maybe C, or C++, or possibly Ada, or even one of the Lisps, but not rule out dBase or something if it's simple flat file stuff, ... maybe Visual Basic if it's only for Windows and is getting wide distribution but not much number-crunching. INTERVIEWER: That's good, that's good. I see where you're coming from. Yeah, good. But which one is BEST? ME: (completely exasperated, losing patience) Yeah, OK, I say APL. INTERVIEWER: APL? Never heard of it. Why's that so good? ME: Uh ... you can write any possible program in it, including any program written in any other language. It's been proven. And it requires special terminals with special keyboards, so it's really hard for anyone else to steal the code and figure it out. INTERVIEWER: Huh. I'll bring that up at the next staff meeting. So I should write down APL? ME: No, I meant ALGOL. It's the best. That's what I would use if I had no other languages to use. INTERVIEWER: (he actually writes that down ... every word) OK, thank you for your time today. Make sure you drop off your visitor badge at the receptionist. (Before anyone asks, no, it's not a true story; I completely made it up. Because junk like that NEVER happens in REAL LIFE!) |
|
I think this youtube clip from Star Trek 4 answers this question pretty well, and echos @thomasblake link text |
|
The best programming language is the programming language you know and have access to, at the time when you have a programming problem to solve. Or LISP. But if you have no lisp on your machine, then the above. No programming language is the best on solving every problem in every environment under every circumstance. Some languages are better than other languages under certain conditions, but none is the best in every condition. Except possibly LISP. |
