jdrietz wrote:I am interested in learning programming and am trying to decide on which language to really dive into. I've narrowed down to Java, PHP, and Python. (others were Ruby and C)
I have pkayed around a bit with PHP (Wordpress) and Java. Now that I am more focused, here are my goals:
1. Learn good programming habits
2. Learn a language which is useful / practical
3. Server-side focues (not desktop / client)
My main concern is whether or not learning PHP will give me an in-depth understanding of programming that I will be able to carry over to learning other languages (some of my developer friends weren't sure how good PHP would be for learning OO techniques, multi-threading, and some things I don't think I will need to know for a long time
If you think PHP would be a good choice, I would appreciate if you would recommend a book or two for learning (remember, to learn not just PHP, but programming techniques in general).
Thanks in advance for your input,
-JR
Here's a breakdown:
Java...is taught in many post secondary institutions because of it's intrinsic OOP support...and was intended to replace C++ (although it's perfect it does have it's problems

)
Java supports cross platform development and many other next generation programming developments. It influenced M$ into developing it's own language/technology C#
C is an excellent language if your interst is in writting fast, machine specific code (despite compliers for everything, the language still binds you to a target platform)...for instance...Kernel development, device drivers, etc...
C++ is the only way to go develop Desktop applications, as it doesn't require any byte code B$ they run fast...although like C your bound to a specific machine you are also bound to a specific OS. wxWindows is an example of cross platform framework, which resembles the Windows only frameworks OWL or MFC. This means you can easy port your applications from Linux to Windows, but the resulting binary will only run on a Windows or Linux...and specific hardware as well (desktop applications are usually safe to assume x86 family of processors will be used). Anyways the important thing to remember...yes it's machine/OS specific...but portability is possible...sometimes requiring changes in code but minimal to what it used to be...
C# is easy to learn and takes care of alot of B$ for you like garbage collection...and the code (as much as I hate to admit) is cleaner because of it's
from the ground up OP nature...but it's sluggish and far from perfect...but eventually most Windows development will be done in C# (converting C++ developers to C# is the hardest part).
PHP/Python...It's to my understanding that Python is an excellent OOP supported language...but the problem is...for one reason or another...it hasn't really caught on...at least not like PHP
PHP is a crazy popular language...every hosting company on the planet likley supports PHP and/or ASP and that rat race between the two titans isn't likely going to change (making room for Python, etc)
PHP although far from perfect...is easy to learn, open source and well supported...also there is plenty of work to be found...both in customizing scripts, writting custom scripts...or building entire web applications...
For web application development PHP is by far the best...ASP proponents will argue there is to many options...and lacks framework support...but that simply isn't true...PHP has many frameworks...and thats the problem, but with experience it becomes a blessing...
For instance...PRADO is a ASP knock off written in PHP...not sure of where it stands right now, but last check...it was doing pretty good...
PHP gives you the ability to start from absolute scratch or start using a popular library/framework...that was it's appeal for me...when I leanred Window desktop development I started in just plain C using the SDK...then switched to writting my own classes and eventually made the transition into MFC and OWL....which made a huge difference in development times...
The point...PHP allowed to me learn from scratch and build on my knowledge as I went...decreasing the learning curve...
ASP does offer the benefit of having M$ behind it...so long as your willing to pay...you do gain access to a plethora of *well written* docs and power tools...something PHP can't compete with...yes there are IDE's but none as well done as M$...
I started web development using ASP but soon decided to go opne source and switched to perl...because at the time...the only way to extend ASP classic was to use ActiveX controls (or atleast thats what I thought) also Windows hosting is on average about double what PHP costs...
I used Perl for about a year or two...while also tinkering in PHP but PHP allowed me to quickly get things done as it's an embedded inside HTML pages...this make learning specifics about web development unessecary (headers, etc) which again shortens learning curve, but allows you to learn as you go...
So to recap...
If you want to learn something practical...and easy...PHP is great...practical I mean...you can make money at it...easily...
Java...good luck...you need years of experience or a degree in some school before you get a job doing anything there....same goes for C++ so practical...not really...
Although C++ is an excellent language to learn, as what you understand that...there isn't much you can't grasp fairly quickly...C++ is arguably the *most* powerful language in existance...as there is very little you cannot do with it once you understand it...
PHP/Python/Perl/ASP
ASP and PHP are practical again cause you can get a job easily with minimal experience...they teach you basics and let you get up and running real soon...expect to study C++ for at least 2-3 years before you can *really* do anything useful, especially in Windows development...
PHP and ASP don't even touch on advancefd subjects like process control, memory managment, etc...but they introduce new problems which come with a ocmpletely different paradigm...like application design, systems design (not OS but rather KBS, CRM, etc) they introduce you to design patterns...and make you more security conscience...but they hide from you many low level details...like again...memory managment...direct control over devices (printer, display, etc)...
Not sure what your after, but it's important to understand that desktop development and web development are completely different beasts...both require *very* different skillsets...almost everything I know from developeing desktop applications doesn't even apply when building web applications...
So you need to either decide for yourself or give me more of what you expect before I can answer anymore...
Cheers
