Web Designer looking to learn back-end programming [closed] - programming-languages

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
my name is Tabetha and I have a question...
I am a web designer, but I always find that while designing the layout and coding the design I come up with great ideas for websites. I would like to know where I need to start in order to learn back-end programming not only for the knowledge, but also for the challenge of it.
I have searched online but can't seem to find the information I am looking for. If anyone can give me a simple, straight-forward "this is what language you need to learn" answer, or perhaps guide me in the right direction I would appreciate it ten-fold.
I am a complete noob when it comes to this, so even the most basic information is probably a pearl of wisdom for me. :)

With this type of question you will never one simple, straight-forward answer :) Are you a Mac person? If so, you'll probably want to learn PHP or Ruby on Rails for server-side programming, along with MySQL for your database. These technologies are widely used on other operating systems, including Windows. The Apache web server and PHP is included in Mac OS X; Rails is easy to set up. Most hosting providers will offer cheap LAMP hosting packages (Linux, Apache, MySQL, PHP) (Google "LAMP tutorial")
If you're a PC person, you might want to learn about .NET (VB or C#), SQL Server and IIS. There are many similarities in the development practices between the different technologies, with MVC being the recommended design pattern. Understanding MVC is important.
There are many other "back-end" technologies, including JAVA, ColdFusion, etc, but PHP/MySQL is the most common.
You could also learn about server-side content management systems, like Drupal, Wordpress or Joomla to name a few. These systems take care of much of the low level data handling, leaving you to focus more on the content and appearance, while sacrificing some flexibility.
Good luck!

Just to add my two cents. Programming language is in reality not as important as having general knowledge of the principles. Look at it this way: knowing how to program is the same as knowing how to design. Programming language is then only a tool, like photoshop, that you can excel in, but it won't make you a designer by itself.
The concepts that are important for web back-end development and actually a must-know if you're in for a challenge, are object-oriented programming, separation of presentation and computational logic, database abstraction, networking protocols (http specifically).
Understanding these essentials will pay off greatly as compared to learning the quick-and-dirty ways of combining php with html.

PHP is probably the most commonly used backend end language, and will probably give the least problems when setting it up in a server. I would recommend using a Framework (at least to start), both for ease of use and security issues. For this I'd recommend the Zend Framework. There's a great tutorial for getting started here: http://www.survivethedeepend.com/.

I am a heavy advocate of .NET languages for beginners. The .NET framework is nice and easy to wrap your head around because Microsoft is great with documentation, tutorials, and giving a complete package.
As you already have knowledge of HTML I would look into ASP .NET or ASP .NET MVC. This website from Microsoft will take you from start to finish in developing a website in ASP .NET and ASP .NET MVC.
Once you start programming with Visual Studio you will see how easy Microsoft makes it for you.

To get you started with backend development, i would suggest u learn how a database (db) works and the various database management systems (DBMS), particularly relational DBMS (RDBMS) such as MySQL, SQL server, oracle, postGRESQL, Microsoft Access, etc. You will come 2 know that most DBMS allow u to communicate with them and issues commands to them by speaking to them a language called Structured Query Language (SQL). So u will need to invest some time to learn the basics of speaking the SQL language to create a database, store new data or modify existing data, fetch data from the db, or even delete data that is no longer needed from your db. In particular i suggest u learn how MySQL works and issuing commands to MySQL since it is the most widely used DBMS in most web projects. Then, you will need to spend some time to learn about computer programming (issuing instructions to computer) and programming languages (the languages used for writing the instructions). You can zero down to learning how to speak a particular computer language such as PHP. The reason u have to learn how programming languages work is that u will need to speak a computer language (programming language) to write the logic for interacting with your database (e.g verifying that some conditions hold true before certain data can be fetched). I suggest u start by learning the PHP language as your backend programming language, since it is the most widely used in web projects. In the programming langnuage u have chosen to learn (e.g php), find out how to issue SQL commands to a RDBMS from that language. In summary, i recommend you learn the combination of PHP and MySQL since this combination is the most widely used for backend web development. But once u get a grasp of how things really work, you can always switch to whatever combination of technologies works best for your particular project. I hope this helps.

Related

Confused in with real time web server choice [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I want to develop real time web application like chatting & real time message conversion. I searched the internet and got confused with few technology
erlang ejabberd nodejs openfire
Right now im in java domain but won't hesitate to learn new things. So can anyone explain what is these technology in a very simple words and what technology i will need to achieve my target ? Does all these do the same thing ? and new technology suggestion from your side will be appriciated.
These are entirely different things :)
At the lowest level you have:
Erlang/OTP is piece of technology, that lets you built low latency, fault tolerant systems. It includes Erlang programming language, Erlang VM and OTP, which is set of patterns, libraries and good practices for writing those systems.
nodejs is a platform, that lets you code JavaScript on server side. It makes your life a little bit easier, when dealing with events, but Erlang is still better saving you from callback hell with actors and messages between them.
At the higher level you have xmpp:
xmpp is eXtensible Messaging and Presence Protocol. This is great for implementing chats like facebook chat, but because it is extensible, you can use it for any kind of messaging.
ejabberd is implementation of xmpp in erlang. There is also fork of ejabberd called MongooseIM. Those will give you great start at developing your messaging application. They implement not only basic xmpp, but also couple of extensions (called xeps in xmpp community).
openfire is solution based on xmpp, so it is even higher level. For chatting and message conversion, this might be overkill, but it depends on your specific needs.
Totally an opinion post:
Erlang: Doing this from scratch with yaws and Erlang is the most straightforward way (its even a code sample in "Programming Erlang" 2nd ed.).
Ejabberd is famously undocumented (and overkill for most webchat services), but it and its better documented/saner cousin (MongooseIM) are robust and already written.
node.js is a cosmic joke played on monolingual ex-frontend web developers.
I've never heard of openfire.
None of these things are bad to learn -- but that's because nothing is ever bad to learn (though some things aren't worth the time you would spend learning them).
The basic problem, I think, is that your goal is probably more broad than you realize, at least in terms of methods by which you can achieve the goal of "develop a web-based chat and communication service". There are a hundred web servers out there, each with its own way of doing active content service, each with a hundred more back-end plugins to a thousand more chat/conversation/comments/blather service frameworks. Any given "technology stack" will often involve a dozen languages throughout it (consider service pages written in PHP from an Apache server which proxies to a Tomcat webserver for pluggable content which calls out to a tiny scheme chat service which stores data in Postgres...).
The situation with most web stacks is, in my opinion, laughable. That is at the core of the Node.js idea, actually: pick a language most people know and stick with it throughout. The problem there is that not every language is well suited to every task (or any task...). But the basic idea that cutting the web tech clutter down is quite sound.
That said, I sincerely think the easiest place to get started is with a relatively tiny language with a small, hyper-knowledgable community around it, and focus on doing everything you can in that language. For this particular task (live web comms) I prefer Erlang and Yaws, writing the service from scratch until some element of it obviously is in need of some pre-written framework treatment. (That is not the right choice of tools for everything, though, so keep an open mind and learn to hate every language, at least a little -- they all suck, just some less than others.)

What would be a good language/framework pair for learning Web development?

What would be a good language/framework pair for learning Web development? I know other people have asked this very same question (for example, Learning Web Development-Choosing a Language and Framework), however, my case is a little different, since I have some additional constraints:
The language the framework is written in must not be "opinionated" about the way I should do things. On the other hand, the framework being opinionated is not much of a problem, as I can always at some point ditch replace it for with another framework or even my own mini-framework.
The framework must let me see how it works, aka, I must have access to the source code. (Which is not the same as the framework being open source. I just want to be able to read the source.)
Also, since my Web server is a Windows 7 Professional x64 machine with Apache 2.2 installed:
The framework must provide convenient access to at least one database engine that can be installed on Windows 7 Professional x64.
Deployment of my Web applications must be as easy as installing an Apache module, editing the httpd.conf file properly and restarting Apache.
Optionally, in decreasing order of priority:
It is desirable that the language the framework is written in be dynamic.
It is desirable that the framework provide convenient access to any SQL database that can be installed on Windows 7 Professional x64.
It is desirable that the framework or a module/plugin compatible with the framework provide convenient access to a non-relational database that can be installed on Windows 7 Professional x64.
EDIT: Since my question has been labelled "subjective and argumentative" not only once but twice, I want to clarify some things:
If the word "ditch" was too crude, my apologies. I already ditched replaced it.
By specifying that the language not be "opinionated", my intention is to avoid having to ask "What is the recommendable/standard/approved/blessed/inherently-good way to do something?" in the future. I want to design my applications, desktop or Web, entirely on my own. If only to find out why some designs are not recommendable/standard/approved/blessed/inherently-good.
By specifying that the framework let me study how it works, my intention is to avoid having to ask "Why subsystem X throws error Y when I try to do Z?". I want to find it out on my own. If only for education purposes.
There is nothing else I can find that I think can potentially be interpreted as "subjective and argumentative". In particular, specifying an operating system and a Web server just means "I don't want to have to install other things than I already have installed on my PC". (Besides, Apache is pretty much the standard Web server.)
Yeah, the question is open ended. This is because I am asking for suggestions. And, since I am a complete newbie to Web development, there would be no point (at least for me) in arguing your suggestions. Also notice, the question is community wiki.
You'll probably need to learn both a server-side and a client-side language.
For client-side development, I recommend:
JavaScript with the JQuery framework library http://www.jquery.com
For Server-side development, I recommend:
C# with the .NET framework library http://www.microsoft.com/express/windows/
Smalltalk with Seaside would be the most fun. One click image can be downloaded, and the book is online.
1 Smalltalk insists that you organize your code in classes and methods, but is open to suggestions on how to do that. Seaside is an opinionated web framework, with a strong focus on DRY.
2 It is a Smalltalk, so all objects and sources are available and inspectable.
3 You can easily get started without a database. Larger scale persistence is done most easily by deploying on a glass object-oriented database (zero code needed). It runs in a VMWare image or on a linux or os-x machine. If you want to write code, you can use the GLORP ORM with SqueakDBX to connect to all databases supported by openDBX, or directly to PostgreSQL.
4 Does it have to be that difficult?
5 If it provides an ODBC adapter.
6 There are interfaces to various NoSQL databases.
PHP and CakePHP are pretty good for LEARNING, there are lots of examples, tutorials and help out there and CakePHP follows the MVC pattern.

Good combination of web application languages

I've looked around some of the asked questions and I noticed many questions dealing with THE best web application language. I'm curious into looking into a combination of web application languages, possibly some that would compliment each other well. At the moment my list of possible web app languages at the moment are:
PHP
Ruby on Rails
JavaScript
AJAX (not really a language on its own)
Grails
I know that certain ones like JavaScript and AJAX work well together but I'm curious about the rest. What about PHP and JavaScript? Does Rails play well with others? Is looking to use a combination of languages even a possibility? I know that some may be used for different kinds of applications but I would like to focus on more than just 1 of them. Thanks for the help. Any and all comments are appreciated.
You are mixing everything up.
PHP and RoR (Ruby on Rails) are server-sided scripting technologies (and Rails is not really a programming language). They can generate content that is served to the user (ie: HTML files), but they can do a lot more. You NEED a server-side language if you want to interact with your users (ie: allow them to leave comments, and etc.).
Javascript (and AJAX, partially) on the other hand runs completely on the client side. You'll mainly use JS and Ajax to improve user experience, but remember to code your site in such a way it works even if JS is off.
Generally, as a complement to your server-side scripts you need a database, and among them the most popular ones are relational DB's that support SQL (Structured Query Language), like MySQL, SQL Server, Oracle, etc.
So, what's the "best" combination for you? It really depends. Hosting with PHP+MySQL is widely available and it's cheap, and PHP has a massive user community, and many freely available libraries and frameworks for you to use. So if you are just getting into web development, I'd suggest starting with PHP+MySQL.
Rails is not a language, it's a framework. Ruby is the language.
Grails is not a language, it's a framework. The language is Groovy.
Ajax is not a language, it's a marketing term coined to describe DHTML, which was a marketing term coined to describe using JavaScript to manipulate DOM elements and styles.
Regardless if it's PHP and Python, Perl and Java, JavaScript and Erlang, you can use any languages together depending on what you're trying to accomplish.
If you're looking for something learn, I'd say JavaScript (and get down and dirty and really learn it... don't rely on a framework as a crutch) because it's the primary front-end language in the web-world. But that's just my preference.
If you could give us a little more insight into what you're working on then maybe someone can give you a better suggestion of languages to pair up.
A programming language is just a means of achieving a goal, hence the focus should always be on the goal. Just as human languages the goal is communication, hence the languages is relatively not important.
Javascript is client side scripting language, while rest of the things that you have mentioned are serverside scripting languages. No matter what server side language you use you would have to use Javascript for client side scripting.
The rest of the 3 languages are opensource languages. Personally I would choose the most popular technology because
a. There is a big community, which ensures that the technology is widely adapted because I would like other third party applications gelling well with my application.
b. Lesser no. of flaws, since someone or the other would report it and the community would try to fix.
c. Dynamic future release: Since the community would like to see feature which are there is some competitive technology they would always want to add the feature. An excellent technology which has very less community built around it dies its own death since there are no future release and slowly it falls behind the competition.
The next important criteria would be is the tech really suits my application. Like if I am using a very slow embedded system processor, I cannot use python I will have to use C.
Well in all above cases I personally love PHP. PHP has some of the best CMS s/w, which makes life easy and there is lots of code available for free and widely adapted by even enterprises.

Should I stay focused on desktop development or learn more about web application development?

Let me introduce myself a bit.
I have 7 years of C++ (most MFC) experience, 1 year C#.NET and 2 years Java experience.
I know little about web application, what I did and am doing is Windows desktop applications.
I start to do some (minor) (freelance) side projects in the past half year and uses C# mostly as it's more "rapid" than MFC. But seems there's more web projects in this market than desktop projects. And I do not feel good as long as I do not know web development.
So, should I touch the new web filed for me or just stay focus in desktop application but learn more e.g Python, or Frameworks/Libraries such as Qt or Boost?
My gut feeling is that more and more people/companies are moving their projects to the web. My company, for example, has added numerous web applications since I have been there. Another prime example of this is Microsoft (yes, even them) providing a web-based version of Office, their flagship product.
There will always be a need for desktop applications, but I see more web-based projects in the future. It's always good to learn something new, anyway.
EDIT: Oh, and you don't lose anything by being aware of "desktop-based" processes. You may be doing more server-side programming, even if it is web-based. So, in other words, it doesn't hurt to continue expanding your knowledge in that arena, as well.
There will most likely still be a market for desktop applications for many years to come. However, web development seems to have taken over a large share of the development market from what I can see. I would recommend definitely getting familiar with web development as it definitely can't hurt to increase the number of skills you have even if you never stop writing desktop apps.
Since you have experience with C# you might want to consider doing some ASP.NET work. Or if you feel the need to learn a new technology then maybe consider a framework like Ruby on Rails.
I'd really suggest looking into web development - like you said, there are many more web application projects - and you already know C#.NET and Java, and both of those languages have really good API's / frameworks for web development. ASP.NET for C# and Java Servlets/JSPs.
I'd first suggest learning some really basic HTML to learn how pages are rendered, then try to make dynamic versions using the language of your choice. Then I'd learn some other web technologies like CSS/Javascript/some Javascript libraries - then I'd start looking at frameworks that build on top of the basics in the language of your choice.
Oh, and some further suggestions - there are web frameworks that are component-based rather than request-based - you may be tempted to learn these as a shortcut to web development since most claim that developing in them is similar to desktop development. I really wouldn't suggest this - as in practice you really do need to know how the web works at a lower level to develop custom components, include things that the framework doesn't do, or to debug them when things go wrong even when using these frameworks. If you jump right in you can get lost/confused pretty quickly.
Microsoft Office 2010 will have an online version. To me this is a watershed moment for Web applications. Office apps are an important litmus test as once you can do Office on the Web (which has been the case with Google Documents for some time but Office has important symbolic meaning) you can do most things that most users care about.
Desktop apps won't die but I definitely think they're going to take more and more of a backseat.
I'd highly suggest you read How Microsoft Lost the API War if you haven't already. One of the things that's particularly amazing about this post is that it was written in 2004.
I honestly believe that with maybe the exception of OSs and browsers, everything will be a web app within the next 10 years. Having said that, let me clarify that by everything I mean everything that a) involves a UI of some kind and b) can be guaranteed secure.
User-interfaced apps will always at some point need a backend, which will at some level require code that is not being interfaced by humans and not being executed via HTTP. I am always reminding myself that things like 'cat' in Unix are actually programs that the OS is calling, not just a function built into the OS. MySQL won't be a web app (as far as I know), but app that powers web apps. We may get to a point where these apps are fully developed via a web interface, written, audited, uploaded and called all via a browser, but at some level its still running behind the scenes.
On that second point, about guaranteed security, I can very easily imagine a large corporation or government office running 95 percent of their daily routines via web apps, but mandating that certain high-security operations be done on a machine directly interfaced with some sort of mainframe, after passing through the cool doors with the retinal scans and what not. Or simply because they can't risk moving certain mission-critical apps over to the web, from fear of it breaking our losing data in the process.
But with those two things aside, I honestly believe everything will be web-based. With the advancement of Web Services and XML in general, it will be possible to not only access and interact with our data, but to plug our custom apps into another app and extend that interaction further and in any environment we want.
It's like that Apple ad "There's an app for that." Except once people get the real picture, it won't be an app written for your iPhone, but a URL. "There's a site for that."
I recommend learning the Lift framework. It's as easy to use as Rails, and it's based on a statically-typed language for the JVM, Scala. From the perspective of your background, Scala should be middling to easy to learn, and you'll be more likely to be comfortable with it than with a dynamic language.
In my opinion, you have a good chance of picking it up quickly, learn a lot about good practices in web development, and even expanding your programming horizons a bit.

Web programming language

I want to go learn web programming,but besides names and a little of html I don't know anything.So I ask you what programming languages you recommend,why,what can be done with it,tools to learn ,etc.I don't know if it matters but I program in a Linux enviroment(Ubuntu).
I don't want to do hardcore web programming ,I only want to be able to develop complete websites and understand network concepts.
Well, most cheap/free web hosts support PHP, MySQL, and most browsers support Javascript.
Target those and you'll be on a reasonably good path.
Some support Ruby and Python, and you might choose that path if you want to learn those languages.
Good luck!
-Adam
Definitely start with HTML, and basic CSS. These are the core of web programming, and you need to understand them well to do anything of consequence.
Once you've got those down, you'll want to move on to a server-side language. The easiest is PHP, but be careful of picking up bad habits, since it's a loose environment; if you stick with PHP, you'll eventually want to use it with an MVC framework such as CodeIgniter, which encourage separating presentation and logic. To get a little more advanced, you can also try Python or Ruby. Get yourself some server space to mess around with; most shared hosting plans are $5-10/month.
For Javascript/AJAX, you'll probably want to start by using Firebug or Firefox's DOM inspector to learn the relationship between the HTML of a page and the DOM object which Javascript uses to interact with it. Once you understand how the DOM works, toy around with jQuery to start doing useful (and fun!) stuff.
You'll also eventually want to learn MySQL (or a similar SQL variant), but that can probably wait, since you can do lots of interesting things without tackling database stuff.
Above all, be patient and persistent, and make use of every resource at your disposal: books, Google, Stack Overflow, and cheat sheets.
Ruby all the way. It's exactly what you need if you're interested in web dev and completely starting from scratch programming-wise. From the basics of Ruby it's pretty easy to get into Rails, which is a very beginner-friendly web framework.
Many great books on Amazon (look for the highest rated of course) on both Ruby and Rails.
Great starting point for links:
http://www.ruby-lang.org/en/documentation/
As well check out Learn to Program
Now get learnin'.
Google App Engine offers free hosting for applications that do not exceed the specified limits. The server-side language is Python, the client-side language is JavaScript inside Django templates. Everything has worked nicely for me in Ubuntu 8.10.
GREAT Question,
a couple of years ago I was in the same place -
What HONESTLY Helped me was using Dreamweaver, I set it in split mode and started watching the code
I used this and started delving into the PHP Application world and could see what was going on (sort of)
I know you can use dreamweaver with wine on the linux, and it can help you do a TON
granted if you continue it has the potential to limit you to the dreamweaver world... but can help you learn and create at the same time
(I build full php apps from scratch now with a notepad... but I started with DW)
The question I'd have is what kind of scale on web programming are you wanting to do? If it is small stuff then the LAMP stack would be my suggestion while if you want to get more into 3-tier architecture then Java or ASP.Net may be worth getting into for middleware or business logic code.
With the exception of the reference to the LAMP stack above, there has been no Perl recommendations. I like Perl as it is easy enough to build a fairly full featured web application (using CGI, or mod_perl). Of course, you are going to have to learn HTML/CSS if you are going to do anything on the web. I feel Perl is a good choice for web development as it is fairly robust and full featured with all of the modules available on CPAN. Combine with an application framework like CGI::Application or Catalyst and you can build sophisticated web apps in a short amount of time. Also, using a tool like XAMPP can help as you won't have to worry about web server or database cofigurations to get started.

Resources