|
|
Subject:
Which programming language to learn?
Category: Computers > Programming Asked by: jjjames-ga List Price: $15.00 |
Posted:
30 Jun 2004 10:43 PDT
Expires: 30 Jul 2004 10:43 PDT Question ID: 368189 |
I did a math degree and programmed in Basic as a kid (I am 32) and am looking to get into programming again. I want to know which programming language to concentrate on first. I have already seen the useful Google Answers at: http://answers.google.com/answers/threadview?id=25842 and explored the links in those answers. A good answer will be from a programming expert who can 'get into my shoes' from my criteria below and suggest a specific direction to take. My criteria are: 1. I am not looking to work for a big corporation or receive a large salary. I have other ways to get an income. My goal would be to explore areas which interest me and build up an expertise, doing projects free for individuals or charities and eventually be able to charge small businesses a reasonable sum as a part time freelance programmer. My other goal is to never wear a suit or be in a 9 to 5 job (I have finished with all that). 2. What I enjoyed about Basic was the problem solving aspect of building programmes and creating solutions and that is what I want to continue with. I have done some web design (using Dreamweaver, Fash etc) and I realised that I am not interested in the design work, just the programming and problem solving side. So I guess my main choices are C, C++, Java & PHP. Which should I focus on? My question can be broken down into: i) If I choose C/C++, I know this is a good foundation for programming, but will I be able to get into doing small, interesting projects for people or will it only steer my onto the corporate ladder? I am not sure which areas of programming I could get into with C/C++. I am more interested in creative fields (I am an actor and writer too) than the corporate/ financial world. And would going straight into C++ be a huge jump for someone well versed in Basic? ii) If on the other hand I concentrate on PHP (as was recommended to me), I think that this is more in demand by small (web) companies, but will I be able to do pure programming, or will I need to be involved in design work too. I guess this is the 'web developer' job but I am not sure how much of that job entails building programs and how much is assisting with design work. I realise that PHP is not strictly a programming language, but I wonder if the same inner rewards of problem solving and creating solutions apply to it. I want to know that I can get stuck into problems using PHP and not be in a 'wishy washy' role of having to do some design too. I don't have a particular leaning towards or aversion to internet related work. iii) What areas could I get into with Java? Would this be more appropriate than C/C++ for smaller projects/ companies? iv) I am from the UK, but in New York for a while (perhaps a year) so would be interested if there are differences between the US and UK in regards the answer to this question. v) If you can suggest any new, interesting areas for programmers I'd like to hear that too. Thank you | |
| |
| |
| |
|
|
Subject:
Re: Which programming language to learn?
Answered By: iq-ga on 10 Jul 2004 18:51 PDT Rated: |
In an interest to close out this question, here is my final response -- posted as an answer. Q) Basically I am not sure how the programming/ design work is split in the 'web developer' job. A) You are saying that you are not interesting in doing the front end, graphics, etc. You can easily outsource the frontend work using elance.com or other service or partnering with a web designer. What you will get in return is the "html" pages and the graphics - or flash pages/java gui. You then take those pages with the text boxes, etc. incorporated in them and put your code (PHP, ASP, JSP, etc.) inside the page to create "dynamic functionality". That is the simplest process by which to only do the "development". Or, you can create a flash front end and use Actionscripts SendAndReceive command to send variables to a php, cgi, or other script which would perform the database access and return variables to your flash interface. In that case, you would use actionscript to do the most of the programming that does not need to go outside of the application. I did a simple google search for "front end vs. back end" and got this as a result: http://www.buyerzone.com/internet/site_design/buyers_guide3.html javascript is useful to know as it's easy to implement simple checks, mouseover events in javascript. Two: You have given me a lot of relevant info on what areas each language can be applied to so thank you for that. However, I am still craving a list/ summary of what different projects/jobs I might get in the real world using the languages we are talking about (PHP, Java, C++). PHP would lead you into the "web developer" category. Java would lead you into the "application developer" or "developer" category. C++ would lead you into the "developer category" or "engineer" category. I would visit monster.com or other job site and do a quick search for "php", "java" or "C++" and see the types of jobs that come up. They are soo diverse that it would be hard to list here. I want to ask an expert (you) this rather than just searching myself because I don't know if i am getting the whole picture of what is out there- it will reassure me to hear what an expert says on this. I am not looking for a detailed list, just a summary and some examples. Alternatively a link to such a summary would be good. Well, Jobnet seems to think that if you wanted to give yourself access to the largest variety of jobs you would learn Java: http://www.jobnet.com.au/ext/site/jobtrendscat.jsp?in_cat_id=1&catName=Programming+Languages&in_type=300&in_sessionid= However, you said you wanted to be a freelancer... so PHP seems to be pretty useful for people who want to do that: http://www.freelance-help.com/ Now -- to answer your question below. Java, PHP, C++ and other languages can be used to perform an infinite variety of tasks. You can probably perform any programming task possible in either Java or C++. However, there are certain languages that are "more useful" for different types of tasks. For creating a web site that is functional very quickly - I would use html/php/mysql. If I wanted to create a enterprise (corporate) web application, I would most likely use Java on top of an application server (BEA weblogic, IBM websphere, etc.) If I wanted to create a firewall or a spam filter, I would most likely use C++ in combination with MFC (microsoft foundation classes). I have been a developer since I was 15. I graduated from an ivy league school with a degree in computer science engineering, taken post graduate classes at Stanford in things as diverse as genetic programming. I have developed trading applications for Merrill Lynch, worked for Sun Microsystems as a systems engineer, developed a number of web properties and other programming projects. After almost 15 years of development experience with many different languages, I still always look for the "best language" for any project that I'm working on. HTML, PHP, SQL, Perl, Java, C++ will cover most of your basis. However, new languages are destined to "show up". When that happens, just grab a textbook - work through the examples and start building your application. Good luck. To illustrate what I mean, I will give my very uninformed attempt below, based on the research I have done (mainly on Craigslist.org!) of what there is out there. (However I am thinking I am oversimplifying things here and that it is difficult for you to answer this as I probably need to become more familiar with the many areas of programming, which is an ongoing process rather than something you can answer briefly.) Anyway... C++/ .NET (corporate): Building desktop software Writing games Building a firewall Developing software applications Developing databases Java: Instant message application Point of sale application Java developer PHP/My SQL (smaller projects): Building web based applications Building dynamic web pages Developing e-commerce sites I am aware that this question could become very open ended so I will leave it there. Feel free to submit this as an 'answer'. You have essentially given an excellent answer. |
jjjames-ga
rated this answer:
The researcher gave a lot of very useful information to what was a rather open ended question. They just needed a bit of nudging in the right directon, but in the end I have learned a lot. I would give this 4.5 if I could but the initial generality of the answer stopped it being a 5. |
|
Subject:
Re: Which programming language to learn?
From: efn-ga on 01 Jul 2004 20:36 PDT |
I'm not knowledgeable enough to charge you for an answer, so I'll offer some fragmentary opinions for free. i) C and C++ are as good as anything for small, interesting projects. C++ is a relatively big and obscure language, but you don't have to learn the whole thing in order to use it. C and C++ are generally less forgiving than other languages--they give you more ways to go astray. ii) I don't know what PHP's limitations are for applications other than web applications. I only hear of it being used for web applications. I suspect it may be too limiting for your goals. iii) You could get into just about anything with Java, except maybe tiny embedded systems. I would consider Java and C/C++ equally suitable for smaller projects. I found graphical user interfaces easier to program in Java. iv) I have no information about this. My guess is that it doesn't make much difference. v) I suggest you consider the Python programming language. It's fairly easy, free, portable, and has lots of useful libraries available. Good luck, --efn |
Subject:
Re: Which programming language to learn?
From: carlhollywood-ga on 01 Jul 2004 22:50 PDT |
You might enjoy reading this (scroll down to "Learn how to program"): http://www.catb.org/~esr/faqs/hacker-howto.html |
Subject:
Re: Which programming language to learn?
From: wildeeo-ga on 02 Jul 2004 11:04 PDT |
Couple of comments: - PHP can be used for things other than web applications, as there is a CLI (Command-Line Interpreter) available. However, this use is fairly rare. - Once you have learnt one language, be it PHP, Java, or C, you will find other languages *much* easier to learn, if you chose to learn future languages. Good luck, whatever you choose. -- wildeeo |
Subject:
Re: Which programming language to learn?
From: hailstorm-ga on 05 Jul 2004 00:44 PDT |
Perl is the most useful language in my experiences. You can do just about anything with it, and in a small fraction of the time required of more firmly structured languages like C++. |
Subject:
Re: Which programming language to learn?
From: iq-ga on 05 Jul 2004 07:56 PDT |
Answering your questions: ?languages prevalent on linux/freebsd and other popular free operating environments. ? ? exactly what languages do you mean by this? C, C++, Perl, PHP, MySQL, and many more. Avoiding VB, ASP, and other Microsoft languanges is what I meant. You probably want to pick either FreeBSD or Linux as your hosting environment. ?Most "projects" you would do for individuals/charities would probably be web based? ? so are you saying that C++ would not be so useful to me if I want to do such small projects? I can imagine that C++ could be used to do anything but practically speaking, in the real world- can you give me a list of types of projects (if any) that I could get as a freelance programmer, using C++. Almost everything accomplished in C++ can be accomplished in Java and other languages. C++ would be more useful if you wanted to build a very computationally intensive application due to performance improvements. Building a gaming engine, file sharing application, firewall, VoIP app, any type of real-time application, etc. would be better in C++ than other languages. Again -- C/C++, because they are 'compiled' into machine language before runtime are better suited for applications where performance is paramount. C++ would not be as useful to you in programming for the web. It is significantly harder to send/receive information from your web browser to C++ code. Also, building and debugging C++ code is significantly more intensive than interpreted languages (Perl, PHP). 2. So are you saying that if I focus on PHP, I could get work where I am only/ primarily required to apply my programming skills (say, in PHP/SQL) and not be required to do web design work at the same time? As above, can you give me a list of projects I might get into with PHP? You misunderstood me. PHP is pretty much only good for web based applications. Perl, however, is very similar to PHP and can be used for basically any project that you get involved with. Perl, PHP, MySQL, FreeBSD is a completely free software stack with which you can accomplish almost anything you want to do. I would add in Flash, Actionscript, and Java if you wanted to develop multi-user web based applications. Many web sites run on PHP. PHP, ASP, JSP are all interpreted languages that are parsed with your standard html code. These languages are the easiest and fastest way to build dynamic html pages (pages that change depending on inputs.). If you are going to be doing any web development, you will need to know one of these languages. PHP is probably the one you should focus on because of the cost. PHP is not useful as a stand alone programming language. Perl, which is very similar to PHP, can be used to create almost any program you want. Many developers actually prototype in Perl and then re-code in C/C++ for performance. Perl is a great language to learn on because the build/debug cycle is very fast. After you learn Perl or PHP, the other will be extremely easy to learn. 3. I do already understand generally the differences you describe between C++, Java, PHP in terms of whether they compiled. I want to be advised specifically which language is more appropriate to learn given the type of work I am after I would learn PHP, SQL, and Perl (in that order) initially. I would then focus on Java. Only if I had an application that demanded very fast execution would I focus on C/C++. The majority of freelance projects are web based. i. ?If you are looking to build desktop software, very complex mathematical systems or real-time software -- C/C++ is your best option.? So are you saying that if I do not want to do these things then I should choose a language other than C++? I imagine such work is taken on by corporate employees (and therefore not relevant to me)? If you wanted to make contributions to the Linux/FreeBSD operating systems, or any number of very interesting projects on sourceforge.net, you would probably need to learn C/C++. Otherwise, I don't think C/C++ is important for you to learn initially. ii. I hadn?t considered Perl but will look into that now. Definitely add Perl to your list of languages. You can quickly figure out how to accomplish almost anything you want in Perl. iii. Again, the features of Java are interesting but can you tell me specifically what sort of projects I could take on using Java? It is interesting what you say about Java and OOP. Java is the best language to learn OOP in my opinion. Java would be very useful if you wanted to develop a stand alone application. The main advantage of Java over C/C++ is that it is cross-platform. You don't need to re-code your software for Mac, linux, etc. If you wanted to build a instant message application, mail reading application, Point of sale application, etc. Java would be a good choice. So far, my intention after having read all these comments is: To learn a few languages; I have now started PHP, to focus on web based projects and I will probably move on to Java next and then possibly C++ after that. I would definitely add SQL and Perl in there. Most applications that you will be building will be database driven. Good Luck. |
Subject:
Re: Which programming language to learn?
From: pests-ga on 06 Jul 2004 22:38 PDT |
http://gtk.php.net/ "This web site is the home of the PHP-GTK project, which allows PHP to be used to build graphical interfaces, with slick interface and highly interactive content. You'll find the downloads and docs here, and the latest news from the project." |
Subject:
Re: Which programming language to learn?
From: spraveenitpro-ga on 08 Jul 2004 00:06 PDT |
Learn Assembly Language. |
Subject:
fun, easy, powerful languages
From: mmmurf-ga on 08 Jul 2004 09:39 PDT |
My suggestion: Python and C# are both very powerful languages that are paired with extensive libraries of pre-written functionality. For non-web programming, either of them will suit your needs quite well. Microsoft and others have (also) released tons of great documentation for learning C#. As a fairly new language, C# has been able to improve upon Java, C++, etc. Python is quite powerful as well, and may have a somewhat larger library of functionality for non GUI applications. For web development, php is fine. Although you may want to also learn a template engine like Smarty. Most serious sites are built using some form of templating. Old style ASP (Active Server Pages) is very much like php, but ASP.NET is quite different and is more powerful. It also includes very nice templating capabilities as a language feature in the new version that Microsoft will release very soon. Every now and then you'll encounter a problem that requires very high performance. I typically use a combination of C and C++ for these. I'd wait on these until you have a problem that actually requires them,... and in the meantime you'll get more experienced with modern programming concepts. Once you know C#, Java will make a lot of sense. I'd stay away from Perl, relying on Python instead, since Python is much easier to learn and master. You should also get familiar with databases if you're trying to find employment. I'd suggest learning two: MS SQL Server and MYSQL. You want to be familiar with SQL and with tying a program to a database. |
If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you. |
Search Google Answers for |
Google Home - Answers FAQ - Terms of Service - Privacy Policy |