Software Development

Это полное руководство по выбору «правильного» язык программирования в 2018 году.

Хочу сразу прояснить кое-что: это не топ самых популярных языков, с кучей названий и модных словечек.

Это объективный и практичный обзор текущего состояния и тенденций в IT сфере, и прогноз на ближайшее будущее, начиная с 2018.

Этот обзор является результатом двухнедельного изучения статистики из различных надёжных источников.

Цель этой статьи ― помочь вам осознанно выбрать язык, который востребован на рынке труда в 2018 году. Это поможет выбрать нишу, которая стоит времени и усилий, и позволит начать успешную и прибыльную карьеру разработчика.

Выбирая язык программирования, разработчики, как правило, смотрят на эти 4 показателя:

  1. Высокая зарплата
  2. Популярность — множество открытых вакансий
  3. Предпосылки к росту востребованности в будущем
  4. Желательно простой в освоении, с которым приятно работать

Каждый язык в этом списке, я описал по следующим пунктам:

  1. Краткое описание. Чтобы иметь представление о языке, его фичах и карьерных возможностях, которые ему сопутствуют
  2. Популярность языка. Диаграммы на основе данных TIOBE и GitHub Octoverse
  3. Сравнение зарплат. На основе данных Indeed.com и StackOverflow 2017 survey
  4. Заинтересованность в языке. Данные за последние 5 лет на основе Google Trends
  5. Фрагмент кода. Чтобы вы имели визуальное представление о синтаксисе языка

Дополнительно я добавил 4 менее известных языка, которые быстро набрали популярность за последние несколько лет и вероятно в 2018 году на них будет большой спрос.

Что же давайте начнём с номера один.

1. JavaScript

JavaScript — наиболее популярный язык, по данным ежегодного опроса StackOverflow, 62.5% респондентов утверждают, что используют его.

За прошедшее десятилетие мы наблюдали колоссальный рост популярности JavaScript, сегодня этот язык доминирует в веб-разработке. Почему? Посмотрите сколько вокруг устройств с доступом к интернету. Сооснователь Stack Overflow Jeff Atwood —  известная личность в программировании, как-то сказал:

Любое приложение, которое может быть написано на JavaScript, в итоге будет написано на JavaScript.

Учитывая это, можно с уверенностью сказать, что JavaScript не сдаст позиций и после 2018 года.

Свои знания JavaScript можно применить во множестве front-end фреймворков, например: Angular, React, Ember, Backbone и других. Или в среде выполнения Node.js, которая позволит вам, с высокой эффективностью, запускать JavaScript на сервере.

Три из четырёх самых популярных фреймворков на 2017 год, по версии StackOverflow — это JavaScript фреймворки.

Если вы предпочитаете незамедлительно видеть результаты своей работы, например, создавая интерактивные веб-компоненты, тогда JavaScript — это то, что вам нужно. Имейте в виду, что работа с JavaScript подразумевает знание HTML и CSS, которые являются основой веб-страниц.

Инструменты Apache Cordova и React Native позволяют создавать мобильные приложения на JavaScript. Вы даже можете начать разработку игр для настольных компьютеров, например с помощью проекта Electron.

Популярность JavaScript за последние 5 лет: Стабильный рост

 

Фрагмент кода на JavaScript:

document.addEventListener("DOMContentLoaded", function(event) {
  var e = document.getElementById("myForm");
  var msg = "";
 
  // Wait for user to click the button
  e.addEventListener("change", function () {
    var myColor = this.color.value;

    if (myColor == "Blue") {
      msg = "Just like the sky!";
    } else if (myColor == "Red") {
      msg = "Quite daring!";
    } else if (myColor == "Green") {
      msg = "Like... grass?";
    }   

    // Output message
    document.getElementById("msg").innerHTML = msg;
  }, false);
});

2. Swift

Swift — относительно новый язык программирования, представленный Apple в 2014 году. Этот язык создан для разработки приложений под iOS или macOS.

Считается, что Swift более производительный и удобный язык по сравнению с Objective-C, который ранее использовался, при разработке на iOS и macOS.

В целом разработчикам нравится Swift. В списке самых любимых языков в 2017 году он занял 4 место, а в 2015 году, был на первом месте. Скорее всего, вам понравится работать на Swift.

Если вы планируете податься в разработку для мобильных устройств, то Swift определённо стоит рассматривать как путь к богатству. iOS приложения, как правило, приносят больше прибыли, чем Android приложения.

Популярность Swift за последние 5 лет: Крутой подъем

 

Фрагмент кода на Swift:

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.navigationController!.navigationBar.barTintColor = UIColor.yellow        
        self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.black]
        
        let navBgImage:UIImage = UIImage(named: "bg_blog_navbar_reduced.jpg")!
        self.navigationController!.navigationBar.setBackgroundImage(navBgImage, for: .default)
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

3. Python

Python ― это язык общего назначения, который вы можете встретить повсеместно. Его используют в настольных и веб-приложениях, серверах, машинном обучении, медиа инструментах.

Его используют такие крупные игроки как NASA и Google. Создатель Python Guido van Rossum работал в Google около 8 лет, и писал код преимущественно на Python.

Код Python аккуратный, читабельный и хорошо структурирован. Правильный отступ здесь не только для красоты ― он определяет выполнение кода.

Python веб-фреймворки Django и Flask становятся все более популярными. Кроме того, в Python есть крутые библиотеки для машинного обучения и анализа данных ― Scikit-learn и Pandas.

Став Python-разработчиком, вы сможете построить свою карьеру в различных IT-отраслях. Это понятный и читабельный язык высокого уровня, который отлично подойдет для изучения новичкам.

Популярность Python за последние 5 лет: Впечатляет

 

Фрагмент кода Python:

import itertools

def iter_primes():
     # an iterator of all numbers between 2 and +infinity
     numbers = itertools.count(2)

     # generate primes forever
     while True:
         # get the first number from the iterator (always a prime)
         prime = numbers.next()
         yield prime

         # this code iteratively builds up a chain of
         # filters...slightly tricky, but ponder it a bit
         numbers = itertools.ifilter(prime.__rmod__, numbers)

for p in iter_primes():
    if p > 1000:
        break
    print p

4. Java

Java ― пожалуй, самый популярный язык программирования. Только представьте, его активно используют 90% компаний из списка Fortune 500. «Напиши один раз — запускай где угодно» — это знаменитый слоган Java, отражающий ключевую особенность языка, которая делает его столь ценным. Мощная Java Virtual Machine (JVM), позволяет запускать Java приложения на любой платформе.

Java разработчики востребованы в backend и Android разработке, в Big Data или на должности системного инженера. Java не самый модный язык, но учитывая масштабы применения, можно уверенно сказать, что он будет актуален еще очень долго.

Можете быть уверены ― для Java разработчика всегда найдётся работа, в том числе удалённая, чего не скажешь о менее популярных языках из этого списка. Поэтому, если вы знаете Java, найти хорошую работу — это дело времени.

Популярность Java за последние 5 лет: Падение

 

Фрагмент кода Java:

public class StandardDeviation {
    public static void main(String[] args) {
        double[] numArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        double SD = calculateSD(numArray);

        System.out.format("Standard Deviation = %.6f", SD);
    }

    public static double calculateSD(double numArray[]) {
        double sum = 0.0, standardDeviation = 0.0;

        for(double num : numArray) {
            sum += num;
        }

        double mean = sum / 10;

        for(double num: numArray) {
            standardDeviation += Math.pow(num - mean, 2);
        }

        return Math.sqrt(standardDeviation / 10);
    }
}

5. C++

C++ — это высокоэффективный и гибкий язык, созданный в 1985 году. Благодаря высокой производительности, надёжности и применимости в различных областях, C++ до сих пор пользуется большой популярностью.

На C++ создано и поддерживается множество крупных проектов. Его используют такие компании, как Microsoft, Oracle, PayPal, и Adobe.

C++ программисты, как правило, востребованы для разработки настольных приложений требовательных к производительности. Освоение C++ считается сложным, но, с другой стороны, он даёт возможность более глубоко понять то, как работают языки, например, предоставляя средства низкоуровневого управления памятью.

Популярность C++ за последние 5 лет: Вверх-вниз

 

Фрагмент кода на C++ :

#include <iostream>
#include <cmath>
using namespace std;

float calculateSD(float data[]);

int main() {
    int i;
    float data[10];

    cout << "Enter 10 elements: ";
    for(i = 0; i < 10; ++i)
        cin >> data[i];

    cout << endl << "Standard Deviation = " << calculateSD(data);

    return 0;
}

float calculateSD(float data[]) {
    float sum = 0.0, mean, standardDeviation = 0.0;

    int i;

    for(i = 0; i < 10; ++i) {
        sum += data[i];
    }

    mean = sum / 10;

    for(i = 0; i < 10; ++i)
        standardDeviation += pow(data[i] - mean, 2);

    return sqrt(standardDeviation / 10);
}

6. Ruby

Все любят Ruby. Этот язык спроектирован, чтобы быть дружелюбным и простым в применении. Ruby ― лучший друг программиста, так звучит его слоган.

Ruby — это язык высокого уровня. Основная идея, которая в него заложена ― сделать больше меньшими усилиями, создавая «чистый» и читабельный код. Чтобы этого добиться иногда требуется немало работы «под капотом», что делает Ruby относительно медлительным с точки зрения эффективности, по сравнению с другими популярными языками. Но это определённо повышает вашу производительность.

Хорошо написанный код на Ruby, выглядит почти как упрощённый английский. Ruby — отличный выбор в качестве первого языка, новичок сможет быстро в нём освоиться и получать удовольствие от работы.

Ruby в основном используют совместно с его наиболее популярным фреймворком — Ruby on Rails. Этот фреймворк позволяет раскрыть все прекрасные особенности языка и превратить Ruby в мощный инструмент для веб-разработки. Благодаря высокой продуктивности, которую обеспечивает Ruby on Rails, этот фреймворк часто выбирают для стартапов, нацеленных на быстрый запуск проекта.

Ruby on Rails — это отличный выбор, чтобы наслаждаться своей работой и получать хороший доход. Единственный большой минус Ruby, это его непопулярность, по сравнению с языками, упомянутыми выше. Поэтому количество вакансий может быть ограничено.

Популярность Ruby за последние 5 лет: Падает

 

Фрагмент кода на Ruby:

Node = Struct.new("Node", :parent, :coin, :total, :starting_coin)

def make_change(amount, coinage = [25, 10, 5, 1])
  root = Node.new(nil, nil, 0, 0)  
  found_totals = { 0 => root }     
  queue = [root]                   

  catch(:found) do
    until queue.empty?
      node = queue.shift
      node.starting_coin.upto(coinage.size - 1) do |index|
        coin = coinage[index]
        new_total = node.total + coin
        next if new_total > amount || found_totals[new_total]

        new_node = Node.new(node, coin, new_total, index)
        found_totals[new_total] = new_node
        throw :found if new_total == amount
        queue << new_node
      end
    end
  end

  return nil if found_totals[amount].nil?  
  
  result = []
  cursor = found_totals[amount]
  until cursor.coin.nil?
    result << cursor.coin
    cursor = cursor.parent
  end
  result.reverse!  
end

7. Rust

На основании ежегодных опросов StackOverflow, два года подряд Rust признавали самым любимым языком разработчиков. Этот язык активно поддерживается Mozilla. Впервые Rust представили в 2010 году, это относительно новый язык, уже заслуживший популярность, которая в будущем будет только расти.

Rust ― компилируемый язык, его часто сравнивают с Си, из-за схожей производительности и области применения. Главным отличием Rust является безопасное использование памяти. Самые распространённые проблемы, которые можно обнаружить в коде на языке Си — это ошибки, связанные с памятью (висячая ссылка, переполнение буфера и другое). Rust был создан, чтобы избегать появления подобных ошибок, которые проявляются во время компиляции (до исполнения кода).

У начинающих осваивать Rust могут возникнуть трудности из-за необходимости соблюдать некоторые правила, связанные с безопасным использованием памяти. Тем не менее опытные разработчики обожают его. Возможно, в течение нескольких лет, он будет очень востребован.

Rust разработчики считаются хорошо оплачиваемыми специалистами, занимая второе место в мире, согласно опросу StackOverflow в 2017 году.

То, что Mozilla принимает участие в развитии Rust, также убедительный повод выбрать именно его.

Популярность Rust за последние 5 лет: Рост

 

Фрагмент кода Rust:

macro_rules! calculate {
    (eval $e:expr) => {{
        {
            let val: usize = $e; 
            println!("{} = {}", stringify!{$e}, val);
        }
    }};
    
    (eval $e:expr, $(eval $es:expr),+) => {{
        calculate! { eval $e }
        calculate! { $(eval $es),+ }
    }};
}

fn main() {
    calculate! { 
        eval 1 + 2,
        eval 3 + 4,
        eval (2 * 3) + 1
    }
}

8. Elixir

Elixir — это ещё один новый язык, быстро набравший популярность, впервые представленный в 2011 году.

На Elixir оказал влияние язык Erlang, созданный ещё в 1980 году компанией Ericsson. Он является одним из лучших инструментов с высоким уровнем параллелизма. Автор Elixir, José Valim, сказал, что в Erlang ему нравится всё, но тем не менее, ещё есть что улучшать. Самым большим минусом Erlang, для разработчиков, является его странный синтаксис и проблемы с юзабилити, плюс нехватка интуитивного управления пакетами.

Поэтому появился Elixir — сочетающий в себе удобство и экосистему Ruby с преимуществами Erlang.

Elixir в основном применяют в веб-разработке. Вы можете ожидать хороший доход, но карьерные возможности будут ограничены. Популярность языка растёт с каждым годом, поэтому в городах, где найдётся несколько IT компаний, на разработчиков Elixir будет высокий спрос.

Согласно обзору StackOverflow за 2017 год среди всех стран, по уровню доходности ― Elixir занимает третье место.

Популярность Elixir за последние 5 лет: Рост

 

Фрагмент кода Elixir:

defmodule Chain do
  def counter(next_pid) do
    receive do
      n ->
        send next_pid, n + 1
    end
  end

  def create_processes(n) do
    last = Enum.reduce 1..n, self,
      fn (_, send_to) ->
        spawn(Chain, :counter, [send_to])
      end

    send last, 0

    receive do
      final_answer when is_integer(final_answer) ->
        "Result is #{inspect(final_answer)}"
    end
  end

  def run(n) do
    IO.puts inspect :timer.tc(Chain, :create_processes , [n])
  end
end

9. Scala

Название Scala происходит от Scalable Language (масштабируемый язык). Этот язык является очередной попыткой «переписать Java», исправляя его недостатки. Код Scala компилируется для выполнения на Java Virtual Machine (JVM).

Учитывая, что Scala используют такие крупные компании, как LinkedIn, Twitter и The Guardian, можно уверенно говорить о востребованности этого языка.

У Scala сложилась репутация сложного для изучения языка. Но тех, кто справится, вероятно, ждёт великолепная карьера. Вакансий для разработчиков Scala появляется всё больше.

Что касается уровня зарплат, Scala входит в первую десятку в мире, а в США занимает первое место, согласно отчёту StackOverflow 2017 года.

Популярность Scala за последние 5 лет: Рост

 

Фрагмент кода на Scala:

package examples.actors

import scala.actors._
import scala.actors.Actor._

object Message {
  def main(args: Array[String]) {
    val n = try {
      Integer.parseInt(args(0))
    }
    catch {
      case _ =>
        println("Usage: examples.actors.Message <n>")
        Predef.exit
    }
    val nActors = 500
    val finalSum = n * nActors
    Scheduler.impl = new SingleThreadedScheduler

    def beh(next: Actor, sum: Int) {
      react {
        case value: Int =>
          val j = value + 1; val nsum = sum + j
          if (next == null && nsum >= finalSum) {
            println(nsum)
            System.exit(0)
          }
          else {
            if (next != null) next ! j
            beh(next, nsum)
          }
      }
    }

    def actorChain(i: Int, a: Actor): Actor =
      if (i > 0) actorChain(i-1, actor(beh(a, 0))) else a

    val firstActor = actorChain(nActors, null)
    var i = n; while (i > 0) { firstActor ! 0; i -= 1 }
  }
}

10. R

R — это язык программирования и программная среда для применения в статистике, графическом представлении и анализе данных. Это язык №1 для специалиста data scientist. Если вас интересует эта сфера деятельности, то R ― это верный и прибыльный выбор.

Популярность R за последние 5 лет: Устойчивый рост

 

Фрагмент кода на R:

readinteger <- function() {
  n <- readline(prompt="Enter an integer: ")
  if (!grepl("^[0-9]+$",n)) {
    return(readinteger())
  }
  return(as.integer(n))
}

num <- round(runif(1) * 100, digits = 0)
guess <- -1

cat("Guess a number between 0 and 100.\n")

while(guess != num) {
  guess <- readinteger()
  if (guess == num) {
    cat("Congratulations,", num, "is right.\n")
  } else if (guess < num) {
    cat("It's bigger!\n")
  } else if(guess > num) {
    cat("It's smaller!\n")
  }
}

Это был список десяти лучших языков программирования, которые стоит изучить в 2018 году.

 

Перевод статьи Alexander PetkovHere are the best programming languages to learn in 2018