Question :
I like to know what exactly is the back-end programming? Does it include offline databases? Everyone who designs and creates databases and tables is a back-end programmer? What do they mean exactly by server side programming? By which languages they do this and may someone gives some examples about some of those programs that are written for server and we call them back-end programs? Maybe its good to ask for which kind of projects/programs/applications we need back-end programming?
Sorry if this is duplicated, broad or boring, but I couldn’t find my answers any other places!
Answer :
Back-end and front-end are emerging separations of concerns in development, typically these days “web development”. In some shops you have two types of developers, often on separate teams. These different groups of developers often specialize (intentionally or not) and this specialization creates a pretty useful mental model,
-
Back-end developers are responsible for things not pertaining to the user-interface. This is usually half the work. Their development stops at some fairly arbitrary hand-off point.
Traditionally back-end developers were the only kind of developers because the user-interface was massively simpler and the pool of people that had a complete understanding (“full stack” in modern parlance) was the norm. As the user-interface became more complex and a litany of vocational schools and camps emerged training people for a specific tract of programming there was a need to place those from this pigeonholed and often spoon-fed pool of the workforce. The work load was removed from back-end developers, and the front-end developer was born. Back-end developers today are likely to be skilled with the database, SQL, Perl, Python, C, C++, and will have a thorough understanding of Networking Administration, and System Administration (and may have themselves migrated from when those forms of Administration were more or less employable on their own merits).
-
Front-end developers are responsible for everything at the hand-off-point forward. Today, professional front-end developers are largely of two camps: Angular and React, previously they were oriented to jQuery, and Backbone like technologies. Today the front-end entails massive libraries, especially Angular, and they take a substantial investment in time to learn, and to stay up to date with. Typical front-end developers are skilled with Angular or React and have extensive knowledge of REST-clients, JavaScript, HTML, CSS, Reactive design, Translation and i18n, Fluid design (mobile vs desktop) and UX concepts.
Some languages straddle both camps pretty well and you’ll find a lot of cross over, like Java/Dalvik on Android which creates pretty well rounded programmers, and also Node.JS which permits JavaScript front-end programmers to transition to and from the backend.
As far Database Administrators are concerned, you’re likely a Back-End developer if you’re here. There are databases (often hosted solutions) that cater to front-end developers which lack a firm understanding of how a database works. One such example is Google Firebase, but shy of being employed at Google you’re likely not a Database Administrator in any useful sense for merely using the hosted Firebase service.
Server side would typically have no UI.
Server side is the business rules, data layer, and database (if required). Server side will typically have authentication.
Client side is the UI and will call the server objects. Client will typically have some business rules and validation.
Server and client can talk using WCF (Windows Communication Foundation), REST, raw socket, and others.
Often the server program will operate as a Service.
You can also have server and client in the same program. The client just creates a server object and calls it directly. You might do this for the initial development and then later move it out.
A web site might host the server code also and just create the server object. The browser client would not access the server object directly.
This separation protects the data from direct access by the client.
What are you looking is named multi tier architecture.
(most applications uses a 3 tier approach)
Check this article: https://en.wikipedia.org/wiki/Multitier_architecture