Development environment. What is it? Which one to choose and why?
Software development environments are a combination of software tools that are designed to write (create) software products. The development environment includes compiler, interpreter, debugger, build automation tools, as well as text editor.
A compiler is a program that reads source code written by a programmer and converts that code into a program.
An interpreter is a program that reads commands in the source code and executes them immediately.
When a software development environment contains all of the above components, then it is called an integrated environment. Such development environments increase the pace and convenience of development due to: automation, the ability to produce the entire cycle of creation and development of software.
Typically, a software development environment is designed for development in only one programming language. And such a development environment as an integrated one gives the right to choose a programming language for development, convenient for the developer (from the languages supported by this environment). Examples are: Visual Studio, Komodo, Geany, Kylix, NetBeans, Eclipse.
The most important element in the application development process is the choice of the right development (DE), which depends not only on the platform, but also on the level of your own knowledge. Let's get acquainted with the most popular of them presenting not so much their advantages as the most common reproaches from the developers.
Let's start with the official representatives of the mobile market leaders: Windows, Google and Apple.
Visual Studio 2015
Description: one of the oldest software products for creating both console applications and having a graphical interface. Adding third-party plug-ins allows you to seriously extend the functionality of the environment, including to the cross-platform state.
Disadvantages: it will be simply impossible for a beginner to understand Visual Studio on his own without taking special courses and reading literature. This product is more for experienced developers who pay attention to the quality of the editor and testing functions.
Description: a relatively young and rapidly growing DE focused on Android application developers.
Disadvantages: sparse personalization features are shown in the code editor and General settings. A trifle, but unpleasant.
Description: this DE is focused on creating apps for OS X and iOS. For the use of Objective C and Swift languages today this DE is the best option, and for some tasks it is the only solution at all.
Disadvantages: many developers complain about the stability of the environment, forcing to make additional changes to their projects after the release of the next version. In addition, XCode is a relatively complex IDE for a beginner to learn on his own.
Let's move from official representatives to universal cross-platform development environments:
Description: a popular tool for developing applications for Windows Phone, Android and iOS, using essentially only one language — C#. In addition to Xamarin Studio itself, you can also use the Visual Studio plugin.
Disadvantages: minor, but nevertheless regular errors, both directly in the DE itself and in the output code. Also, despite the reputation of a cross-platform environment, porting ready-made applications to Xamarin is quite difficult.
Disadvantages: performance. The tedious waiting for compilation, recompilation and testing is sometimes really annoying.
Description: a platform for quickly creating console and graphical applications for all the devices at hand.
Disadvantages: the features provided by Appcelerator Titanium have a downside: generated errors in the code, artificial limitations, insufficient quality documentation.
Description: the development environment, initially focused on working with Java, has become famous for a large number of external modules that significantly expand its functionality (including the number of supported languages).
Disadvantages: a significant lack of documentation, there is no unified community of developers.
Disadvantages: it shows low performance due to the of "all in one" concept. Some plugins (including those for Android app development) have significant functionality limitations.
Disadvantages: limited functionality caused directly by the main idea of a non-target development environment.