FAQ: What Programming Language Should I Start With?

Status
Not open for further replies.
how am i crazy? then can you tell me what are the practical adventages of using java and such over the use of community driven language such as ruby, python and perl? The only thing that i can think of right now is that java can use applet.. but that isn't really practical or widespread.. you'd better off using a flash alternative :p
 
I don't think you're crazy, but I don't agree with your statement:
I personally will want to stay away from VB, C#, Java, as those are developed by big corporations for the masses (what they mean is that they will limit the hell out of you, can't do much interesting..
The reason I don't agree with that statement is because you lumped VB, C#, and Java all into the same group, and said they're all useless. I hate VB, but that doesn't meant you can't do anything with it. I'm not Super fond of Java anymore, but I still recognise it as an extremely powerful langauge. Sure there is lots of boiler plate code, but it's because of the extreme flexibilty you have that it's there.
Same with C#, the flexibility and power require that there be some redundant code. Languages where you're limited in your options and what you can do (e.g. perl, python, tcl, ruby) it's much easier to write less code, but you can't do NEAR as much with it. Try writing a commercial grade application (either command driven or Windowed) in Perl or Python. Chances are you could do it, but it won't be fun and not very good either. Now try writing the same application in C# or Java, there's a huge difference.
 
mmm.. i don't know about you, but i'm lazy.. i want to write as little code as i possibly can to accomplish something.. and java/c# is not flexible, if they are flexible, they'd not force you into the OO model (i agree OO model is useful in many cases, but in other cases moduler programming would be better and more logical).. can you show me what makes java more suitable to write "enterprise-grade" program that python/perl/ruby can't accomplish (you can basically translate java program line by line to python/ruby as you wish..)?
 
You're using the wrong use of the word Flexible. Flexible, in the correct use of the word, describes what range of tasks you use a particular language for. You're using it to describe how it handles tasks, and user convienience. Java and C# are extremely flexible because they can accomplish tasks on such a wide range without any trouble.
And to be honest, if I wanted to program an application in non-OOP (which I'm not sure why I would do that, because I have yet to find a company in favor of no-oop) in one of those langauges I could. The only thing I'm "forced" to do is contain that code in a class.
So if writing:
Code:
class ClassName{
}
really bothers you that much, then maybe you should re-think your profession.

And maybe you havne't noticed yet, but programming is NOT for lazy people. If you wish to be lazy I'd suggest you find another job. In order to obtain great power, and great flexibility/robustness you have to have some redundancy. It is absolutly impossible to combine power, robustness, flexiblity, and the option of security without redundancy.

And Dear God, you can't tell me you'd write an enterprise application using ruby or perl! Tell me how you'd write a nice front-end for an application that imports .CSV files, loads them into a grid that users can edit, then either exports them back to .CSV, .XML, or sends them directly to a SQL Server. On top of that it needs to allow custom user profiles, that are protected by enryption and store such things as user settings, sql servers, passwords, etc. Also, I'd like it to be able to dynamically handle different .CSV files, and different SQL Tables....Ok thanks.

I don't think you'd have too much luck. You might be able to make the program, but would it be extensible, easy to maintain, secure, ROBUST, and efficient? I don't think so. Not only that, this was only an extremely simple example, real-world enterprise applications are much more complicated than that.
 
mmm.. a range of tasks eh? well, considering all languages are turing equivalent (at least the languages we are talking about), they in theory can accomplish about the samething as any other language.. so flexible all comes down to the fact which makes your life easier.. and i pose again the same question.. can you tell me a feature that java has which makes java a better "enterprise grade" language than say python is?

now, let's see what's java's supposed adventages are:
it's Object Oriented, actually, it's not the best object oriented language out there, ruby, smalltalk, and CLOS (Common lisp object system - based on smalltalk) are all arguably more pure object oriented language than java

many features in java makes the code more resuable: ok, so it's relatiavly more resuable than assembly.. possibly even C (but it isn't nearly as effecient as c, which counts for alot in some arena).. but when you compare any language that has an adquate object oriention system, you can't say java is anymore reusable than the next object oriented language.. and let's consider what exactly is the most resuable at least in the programming language circle.. well, what do you use the most? programming language itself of course.. you can mold programming language to whatever you want. and that's the ultimate reusability.. whatever language makes your life as a programmer to change whatever you want in the language will be ultimately most reuseable.. as you can mold a general language to a domain specific language that you can use in the application.. one of the best example is Emacs's elisp.. and common lisp follow that tridition, it allows you as programmer to get on as much core as possible without prevent it to work, such as it prevents you to change garbage collector without alot of trouble..

i don't know what else java is good at (those are the stuff my comp sci teacher always telling us..)..

Iron_Cross said:
In order to obtain great power, and great flexibility/robustness you have to have some redundancy. It is absolutly impossible to combine power, robustness, flexiblity, and the option of security without redundancy.
erm.. the whole point of high-level languages is to abstract away as much redundent detail as possible, if you and i agree that it's redundant, why not let computer do the work? as programmer time gets more and more expensive, why should we do any redundant work that we can abstract away?

Iron_Cross said:
You might be able to make the program, but would it be extensible, easy to maintain, secure, ROBUST, and efficient?

extensible: yes, Object Orientation is not the only way to obtain extensible software, may be you *should* investgate bottom up programming? check out the following article: http://www.paulgraham.com/progbot.html

easy to maintain: i'm not really sure what you mean by that.. in my mind, easy to maintain means keeping program short, brevity is always the key to keeping everything clear (i learnt that while writing essays :D), when you can keep more of your program in your head at one time, you'd have an easier time of finding where to change..

secure: well, security is such an elusive term, any properly constructed program will be secure, no matter what language you use.. though, as program grow, the security holes will grow, so keeping it short will help :D

robust: again, i'm not really sure what you mean by robust, i have a hard time coming up with an explanation that's not explained before.. the first thing come to mind is efficient, but guess you already had that covered..

efficient: well, java is anything but efficient.. if you call 200 times the speed of c efficient, i don't know what's inefficient :D there isn't even an option natively to compile java into machine code, if they allow that, then java "might" be more efficient :D

again, i'm not trying to argue that we should all ditch java and use some other language.. surely there is something java good at that everyone likes (not that i can think of any), but, if you want to use java and loves it, i'm only suggesting that you investigate other options if you really love programming.. if OO style is the be all end all style, then what the hell is Aspect Oriented programming doing here?
 
I've used HTML in class a while ago and decided to learn some programming. I started C with a small book and decided to switch to python. I really like python and it's a really good one to start out with.

www.greenteapress.com has some open source books on Python, Java and C++. I plan to go though all of those for a start. then worry about the web languages. Python is alot more fun than screwing around with HTML. How about this for a easy hello world program.

print 'Hello World'

BTW, thanks for all of the useful links.

Peace,
Tom
 
From my experience, this is the language order I recommend.

  • C
  • C++
  • (assembly)
  • Java
  • C#
  • (assembly)

Writing a "Hello World" in C, probably takes you 5 lines. How more simply can you get? :)
 
Status
Not open for further replies.
Back
Top Bottom