What Will We Study?

Get an overview of what we will study in this course.

We'll cover the following

As was stated earlier, there are many trends in software development. Each trend is unique and requires its own basic knowledge. Currently, at least two “tried and tested” trends in programming give the maximum result in the minimum amount of time. “Results” here mean both cash compensation and attaining the capability to do something with our own hands.

The first of these “tried and tested” trends in programming is mobile development—programs for mobile phones like Android, iPhone, tablets like iPads, and other devices. The second is web programming, or web development.

However, mobile development itself often means optimizing the code for mobile devices in all sorts of ways. The programming language and software development kit (SDK) are often tied to a certain development style. This style is different from the classic object-oriented programming, and it is more procedural. With procedural programming, we can’t always make full use of the language’s capabilities. However, this is not always important, especially if we are just aiming to earn a good salary.

The second aspect of program development for mobile devices is that there are two main mobile platforms. One belongs to Apple, the other to Google. The policies of these companies will determine how these platforms will develop in the future.

In the case of web programming in Ruby, it all looks somewhat different. The language is developed and supported by the programmers themselves. The web framework, Rails, is also supported exclusively by the community. This enables programmers from all over the world to create a convenient tool just as they want, without the need to look over their shoulder at the policy of any company.

Furthermore, programming in Ruby is rarely used on mobile devices. Therefore, they hardly ever need to be “specially” optimized in practice. The main difference between Ruby and the languages used for mobile development is that Ruby is a dynamic language—not in the sense that it is developing dynamically (although it is), but in the sense that it includes dynamic typing of data.

The main advantage of dynamic typing, compared with static, is that there are fewer rules and less strictness, which gives a higher rate of development of applications by the programmer. This comes at the cost of slower performance of the written programs and “sufficient” reliability. The performance rate does not particularly interest us since Ruby is not used for developing mobile applications. However, it is often a key link on the server and facilitates the functioning of mobile applications for iOS, Android, and so on.

Undoubtedly, other programming trends also exist, such as those within the development of computer games. Even a lifetime would probably not be enough to check all the trends, so we will leave this task to more inquisitive minds and restrict ourselves to what is in demand in the market, permits rapid input, and is more interesting than boring.

Web programming or something else?

This course is divided into two parts.

  • In part 1, which you are reading right now, we consider the basis of Ruby as a language and its use in the command line.
  • Part 2 of the course includes more details on web programming and the Rails framework.

The point is that Ruby is quite a powerful tool in itself. Students of the online Ruby school have found work even without any knowledge of web programming. The basics of the language and the ability to find and use the required libraries make it possible for us to create useful applications. These can be employed for data processing like web-scraping to create script configurations and to control an operating system (which will definitely come in handy for any system administrator), for working with files of different formats, and so on.

The ability to use a language for various jobs that are not connected with web programming gives an indisputable advantage to us before we start web programming. Web programming itself involves knowledge of certain generally accepted concepts. Now, we’ll be able to solve these problems with the use of a tool that we already are learning how to handle.