As a web developer, what languages do you think would be widely used (most popular) in a couple of years? Currently I am coding in PHP, but I would like to know if I should start heading into a new direction.
Many companies are going with ASP.NET and ColdFusion, should I start switching/learning these languages, or does PHP still have a couple of years left?
I just want to know in what directions most companies are heading.
views:
2190answers:
21Just knowing multiple types of languages is good, not only because of the future of said platform but when a next generation of languages comes along, you can pick it up in a short time due to your experience in the field
PHP certainly has it's short comings (from duck typing, weird OO support, etc.,) but that's not to say that it's going away any time soon.
Do some searching on SO -- there are many questions similar to yours.
Any lastly, it's always good to know more than one language :)
I don't think PHP is leaving anytime soon, because it is being actively developed.
ASP.NET does also look like a good choice. My guess is that future would not be about languages, but about frameworks and libraries.
Currently, you have a lot of libraries out there and they still compete with each other to get a piece of developer market. So, the true question is which libraries will prevail and which ones are going to be the market leaders. Just like Delphi ruled desktop development market years ago, the whole RAD and IDE actually won, not Pascal as a language - although I admit Pascal is nice.
This is more like 'the future of web programming'.
It's always a question of what tool is best for the job, and not 'how can I make a screwdriver act like a hammer'.
I'm not saying learn them all, but rather, learn widely available languages first, then pick up syntax for appropriate solutions as you go.
First of all, none here knows the future.
Second, knowing multiple languages is a must in programming. Of course you can master some more than others but, always play safe.
Third, PHP is not dying, but sometimes Java or .Net can be more "structured" for language in business. That doesn't mean that in few years PHP will not change and become as strong as Java or .Net for business.*
*PHP is strong, but business seems to like more .Net or Java because of many reasons.
Knowing lots of different languages/frameworks is overrated. Beyond a certain level of basic competence, general intelligence is more important than technical knowledge.
I think a good choice would be to learn multiple languages that are different from each other (different ways of programming, not just syntax).
This will give you a broad experience, and when the time comes to use an unknown language in a project, you'll likely have tried a similar language before.
My 2 cents.
PHP will be viable for a long time. It doesn't hurt to learn ASP.NET, Java and Ruby. Don't try to learn them all at once. Stay focused on PHP unless after learning some other language you decide you should focus on a different language.
Judging from what we've seen in the past few years, the popularity of a web programming language relies on two things - one is ease and speed of development, and the other is how powerful an app you can build with it. Look at how fast Ruby on Rails became popular, and why. I'm not saying that it's among the most popular languages now, but it certainly has it's share of devoted followers. Then again, Java on Spring MVC is still an extremely popular choice for building enterprise web apps, and for a good reason - you can build good, thoroughly tested and robust code. So, what can we conclude from all this? A future web programming language of choice of most developers would have to satisfy these terms - allow you to build powerful apps that have robust code, yet do it with the least possible effort. And, on top of all that, allow you to provide your users with a good user experience. Personally, I'd watch out for technologies for creating RIAs, like Flex, OpenLaszlo and others. They certainly have a lot to go when it comes to developing web apps, but I can see a bright future for them.
I suggest getting a strong working knowldge of the fundamentals that can translate to most languages.
I would suggest knowing some C because it teaches you pointers, memory and a lot of other programming concepts that will help you with other langauges.
Programming is really about understanding abstract concepts. A [good|real] programmer can code in anything, provided he has reference material available for the environment he's got to code in. The comprehension of the business problem and what's needed to solve it are what's important. The language model is irrelevant to the bottom line.
That said, some are [easier|faster] to develop in, depending on pre-existing code that you have to interface with and how you go about debugging. When crossing environments, XML-RPC and SOAP are your friends. I am currently interfacing an application written in perl with an application written in classic ASP by creating XML-RPC servers in ruby. Fun stuff. However, the classic ASP is a horrific environment for debugging that I wouldn't wish on my worst enemy.
I really think that a form of JAVASCRIPT will become the standard one day
It shouldn't hurt you to learn more languages even if they are not going to be widely used. You can always get new ways of thinking from different kinds of languages.
Currently, there is some increasing popularity of functional programming, and dynamic languages are already widely used. You could at least sneak peek some of these languages so you can make decisions on what to use when the time comes.
It's not only about languages of course but about arquitectures. Try to see the global picture and caracterize the most used platforms.
By example: Java and .Net platforms provide more or less the same complexity (layers, abstractions). It can fit better for large or modular applications. PHP on the other side has a very different approach. You can also compare how every technology is more or less accesible. Again with Java vs. Net example: Java is more like multiple implementations, standarizations, strategy pattern, and .Net is a more centralized platform, giving more direct access to the developers.
So, try to see what things appeal the most to you (it's important to feel comfortable too) :)
Knowing multiple languages and being a polyglot is obviously advantages. However, at some point you have to pick a language to develop in and you will probably become more proficient in that language than the others you know.
One way to see what the trends are is to look at Google trends and see how search terms for different languages have changed over time. There's a blog post here about it.
I've also seen people analyze book sales for programming languages as a way for determining trends in languages. However, book sales of programming books are declining as more programmers turn to the web and sites such as Stack Overflow for information.
The current trend is towards javascript applications that have offline support, with client-side storage. This is already mostly the model that the google apps use. You can do this today quite easily with google gears, or natively in chrome. I expect that over time server-side html generation is going to become a thing of the past, or at most something for the first page view, and you'll use the server only as a collection of web services for data storage and data processing. So, what you'll need to know in 5 years: javascript, gears (html5 storage, worker pools, ...) and web services.
PHP is still going to be around for more than a couple of years.
However, if you do see a clear trend in your area, it's worth investigating further - maybe you could contact a few of the companies and ask why they are changing? (Afterall, even if 90% of the world is using language X, if you're in the middle of the 10% that doesn't use it, it's not the best choice for you.)
Eitherway, knowing (at least) the basics of several languages is always a good thing.
---
For ColdFusion / CFML, it is an interesting time...
- the CFML language is being formalised by representatives of the three main engines plus key community members, to produce an open standard.
- Adobe is working on ColdFusion 9, for which they are focussing on developer experience.
- Railo 3.0 is out recently, with some really cool features (cfvideo & multimedia, cluster scope, easy Amazon EC2 and S3 use, and more)
- Railo 3.1 is due in November, when they go LGPL v2 with Redhat/JBoss.
- OpenBlueDragon is already out as GPL v3, with the first versioned release coming shortly.
With all this happening, CFML is definitely not going away, and is a good choice if you're looking to learn another language.
I'd take a somewhat different tact and ask if you know:
1) Web server software, e.g. how to configure Apache or Microsoft Internet Information Services or Websphere.
2) Database, e.g. MS-SQL, Oracle, MySQL to name a few.
3) Browser compatibility. How well does what you write work in IE8, Firefox 3 or Google Chrome? This is another area where developers have to keep on top of things in terms of which browsers are supported as well as which version.
4) Mark-up languages. HTML and XML are a couple of examples of what you may end up using at times and so familiarity with the concept is good.
5) Internet guts. So besides a web page, what other web ways are there? Web Services and AJAX are a couple of other ways for the Web to be used beyond the simple HMTL web page. RSS and some of the newer social media sites may be other ways that people communicate over the internet.
PHP is fine for a server-side programming though you may want to try some Java or C# just to try out a different language that are common for middleware and back-end systems.
What's the matter with you people?
This guy works in PHP and asks for alternative Web Programming Languages.
21 answers so far, people recommend Javascript, Java, Ruby, C#, F#, Railo (wuzzat?), SQL, C (!), Perl, yet nobody mentions Python??
Now I'm afraid to check outside of the windows for the fear of discovering that I woke up in a parallel universe. With no Python. Shit....