tags:

views:

127

answers:

7

I am a software "professional" with just a year's work experience in maintaining other people's badly written C++ system programming code.

I see that the real action today is in the web programming world and would like a piece of it, but I am clueless about where to start.

I took a look at the various web frameworks (Rails,django,zope,Seaside,UCW et.al) but they seem to assume a lot of familiarity with the domain.

Would raw PHP be a better bet? Are there any other languages that allow me to do similar things?

A: 

It's a matter of which context or stack you're familiar with. If you're used to c++, then PHP will be slightly familiar to you. With a .Net or VB background ASP would be more familiar.

I would recommend learning a language first, and then appropriate frameworks later. If you're not familiar with PHP, you're not familiar with PHP error messages produced by a framework using PHP.

Basicly every webprogramming language output's HTML/CSS & Javascript. You cannot de webprogramming without learing those languages.

Gerrit
Could you elaborate?
Plumenator
+1  A: 

I would pick two stack/language combinations whose documentation looks good, and which you feel "fit your brain", for instance, Python/Django and Ruby/Rails.

Do the tutorials for both, and also try to understand what's going on under the covers in terms of HTTP, HTML, CSS, JavaScript. To do that, get familiar with a network monitoring tool (eg. Fiddler, Wireshark) and a browser debugger (eg. Firebug).

That way, you can learn:

  • The specifics of two stacks
  • The general principles shared by all stacks
  • The underlying mechanisms by which the web works
RichieHindle
A: 

I'd try Rails, Django, or Sinatra. There is a lot of web specific knowledge for these, but if you are okay with taking some time to learn them, they will give you some idea of best practices and techniques for making websites. Rails and Django are heavyweight frameworks that handle it all, but Sinatra is a pretty minimal stack that should allow you to get stuff done quickly. Web programming comes with a different set of concerns than desktop software. It is valuable to learn from those who have tackled and tried to solve large parts of the problem before.

Erlang is awesome. You should definitely experiment with it as it can help the way you think about programming and concurrent systems. If you want to do web programming with it, you should check out the Nitrogen Project.

Ben Hughes
A: 

First, learn at least basic HTML, and learn how the web and web pages work. Don't be like this poor guy How do I make text bold in HTML.

John Saunders
A: 

In my opinion, web programming is less technically challenging that C++. Don't get me wrong, the field requires it's own set of knowledge but you should be able to transition with little effort.

Do you have a good working knowledge of [X]HTML? If so, what about JavaScript and finally, do you have a base on any web scripting languages? Assuming that you just want to get in to the dynamic page end of things, I think it is just a matter of learning the basics about web programming and HTTP servers.

PHP, ASP.NET (and others) would be good options to start. I would not recommend one over the other. Which language might depend on what you want to learn or accomplish.

What type of information do you think you need as a prerequisite?

To Get started, I think you might want to:

  1. Setup IIS or Apache on your local development machine
  2. Get a hello world application working (in the language of your choice).
  3. Add to that script.
Frank V
+1  A: 

Most web programming nowadays is done with interpreted languages usually, but there are a host of server-side languages. Any of them can be picked up with ease.

It depends a bit on your platform, ASP.NET for example would be better suited for Windows hosts than Linux. And well, there are various other options that work well in both (Windows or Linux) environments.

Languages such as Perl, Python, Ruby, PHP, .NET, and Java come to mind. But really it comes down to what resources you have available to you. Do you have any friends at $work that have some experience? Such people can be very helpful when get confused about something.

The problem with your question is that its most likely going to boil down to a language war. The languages are for the most part irrelevant. It's a personal choice. As long as you select a language you have an interest in, you can do just about anything with it.

As to "raw" coding or the like, that is how I learned. In my opinion, nothing is going to teach you the ins and outs like doing it yourself. And expect to make very big mistakes. Painful ones. That's learning. Learn frameworks when you understand the language and how server-side programming differs than a client-side application. If you dive straight into a framework of any sort, I suspect you'd drown. I know I would have years ago.

Danny
+1  A: 

What I would struggle with in suggesting options for you is how low (level) do you start. Languages like PHP allowed people to jump right into web programming really without needing to know a whole lot about how HTTP works. This is nice because you can focus on the language rather then some of the implementation details.

Being a C++ programmer you might compare this to learning to program in C++, then Java. Java lets you program at a higher level of abstraction but you also miss some of the important low level stuff.

I would suggest if you enjoy (or are at least familiar with Python) then give Django a try. It's a great web framework and you will have the benefit of learning a new technology/framework without also needing to learn a new language.

As you become more comfortable it will be important to start learning some of the following common "themes" in web programming and how different technologies aim to make programming easier in the Web (Just to name a few):

  • HTTP (Headers, request, response)
  • Browsers
  • Stateless applications and the ways to make them stateful on the Web
  • Common Web security issues like cross-site scripting, sql injection
  • Client side scripting
  • MVC, RESTful programming

Just to name a few. I'm sure as you get into this stackoverflow will be a great resource. Best of luck!

Scanningcrew