Bestprogrammingbooks.net

Your Guide to Finding the Best Books for Learning Programming

Why learn programming?

Whether you want to become a professional developer, increase your productivity or just program in your spare time, programming is a very valuable skill to learn. Programming languages allow you to take greater control over computers and give you the power to build websites, write apps for mobile devices, automate servers, and streamline workflow, among many other things.

In general, the two best resources to learn are the internet and books. Here, you will find a plethora of information about programming books and how to best obtain the ones you need. In addition, you will also find links to internet resources where you can read documentation and tutorials to help you learn how to program.

Where to start?

You should start by deciding what your goal is, and then find a language that will allow you to accomplish that goal. Review the categories below to help you get started. You can drill down into each category to get more information about the languages, as well as links to resources that will help you learn. You can get a brief overview of all of the languages featured on this site here.

General Purpose

General Purpose

The languages in this category are generally used in many different situations. For example, C and C++ can be used for everything from compilers to operating systems to cell phones. These languages are also commonly used for game programming, however, C++ is used more often because of it's speed and object oriented capabilities. Perl is a dynamic language that can be used to easily write scripts to automate tasks such as deployment and backup scripts. Ruby and Python are very good for this, as well, however, they have been included in the Web Development section due to their popular frameworks(Django and Ruby on Rails). Haskell, LISP and Erlangare very popular in academic circles, however these languages can also be used for various scripting tasks. They are most commonly used by mathematicans and scientists.

 

Web Development

Web Development

As the web continues to grow, so does the number of people with the desire to learn how to build and maintain websites. Thus, there are an infinite number of resources dedicated to this particular topic, and we have even moved some general purpose languages(such as Ruby and Python) into this category as they are beginning to see a large role in the web development space. In general, web development can be divided up into 4 categories: Front-End, Back-End, Database, and Servers.

Front-End Web Development involves everything that happens after an http request has been made and information has been served up to a browser. Once markup(generally HTML) reaches the browser, it has the responsibility to display everything appropriately. The display includes everything from fonts(HTML/CSS), colors(HTML/CSS), layout(HTML/CSS), rich interactive elements(JavaScript/Flash) and animations(JavaScript/Flash). Thus, HTML, CSS, JavaScript and Flash are all items that are executed by browsers, which is why these particular languages fall in the "Front-End" category.

Back-End Web Development involves the implementation of everything that goes on on the web server. When a request for a website is made, the server looks at the URL and executes business logic based upon certain elements in the URL. Once all of this execution is complete, a response is produced and sent to the browser, where it executes the front-end code. The Back-End code usually interacts with a database in order to create, read, update or destroy information(these actions are commonly referred to as CRUD). Often, frameworks are used in back-end development as they provide and easy way to implement commonly needed tasks(database access, for example). Some popular back-end web development frameworks are Spring(Java), .NET(C#), Ruby on Rails( Ruby), Code Igniter(PHP), and Django(Python).

The Database is usually where all important data is stored for later retrieval by a web application. It is important that the database be a separate component as it allows for business logic to be decoupled from data(in other words, you can use the same data for many, many different purposes). The most popular databases are MySQL and SQL Server.

Web Servers are the software that provides the ability for http requests to be handled and on top of which the back-end languages and database are run. The most popular web servers are Apache and IIS(Internet Information Services).

 

Methodology

Agile Development

This category contains information about books pertaining, not to a specific language, but to general programming best practices. While knowing a specific programming languages is important to accomplish a particular task, if the task is very large, it is good to know certain concepts that will streamline development and maintenance. For instance, if you adhere to test-driven development by writing tests before the implementation, you will be more likely to find bugs as you go along. In addition, your code will be easier to maintain and refactor, as you can run the tests after changes are made to see if you introduced any new bugs.

 

Shell Scripting

Shell Scripting

Each operating system provides a way to access the file system and processes via a command line. The command line is a developers best friend as it allows for very quick manipulation and vast control over a particular system. While the Linux and Unix versions of command line are much more powerful, Microsoft Windows does provide a decent command line that can be used for similar tasks. In addition, Microsoft recently introduced PowerShell which provides functionality that rivals that of *nix based command lines.