20 тенденцій програмування в 2020 році

  • 3 января, 15:22
  • 5781
  • 0

Прогнози - справа складна. Прогнозувати майбутнє розробки програмного забезпечення - ще складніше. Але в той же час цікаво потім порівняти, що збулося, а що спростувало наші очікування.

1. Інфраструктура: всі дороги ведуть в Хмару

2019 рік був прекрасним роком для  хмарних сервісів. Навіть компанії, що займаються питаннями безпеки (в тому числі Пентагон), урядові організації, охорона здоров'я, банки, страхові компанії рухаються в напрямку хмарного зберігання даних і обчислень. Ця тенденція виразно збережеться і в 2020 році.

20 тенденцій програмування в 2020 році

Gartner  опублікував прогноз, що ринок хмарних сервісів при збереженні тренду виросте в 2020 р ще на 17%, досягнувши 266,4 мільярда доларів.

Великі хмарні провайдери (Amazon, Microsoft, Google) пропонують безкоштовні пропозиції для практичного ознайомлення з роботою в хмарі. Наприклад, Google надає купон на 300 доларів і один рік обслуговування.

2. Хмара: Amazon лідирує, але інші наздоганяють

Публікація компанії Canalys за третій квартал 2019 року вказує на те, що постачальники Big Cloud (AWS, Azure, GCP) займають 56% ринку, при цьому на AWS доводиться 32,6% всього ринку.

20 тенденцій програмування в 2020 році

Інші хмарні провайдери також скорочують розрив з AWS. Нещодавно Microsoft уклала контракт з Пентагоном на 10 мільярдів доларів  для проекту  JEDI.

У той же час Google розвиває фонд Cloud Native Computation для стандартизації хмарних обчислень. Довгострокова мета полягає у спрощенні міграції в хмару, щоб інші компанії могли легко перейти з AWS на GCP.

3. Контейнеризація: Kubernetes стане сильніше

З битви за  контейнеризацію  між  Kubernetes, Docker Swarm і Mesos явним переможцем вийшов перший сервіс, продовживши закріплюватися на ринку. Якщо хмара - це розподілена система, то Kubernetes - його операційна система (розподілений Linux).

20 тенденцій програмування в 2020 році

На Північноамериканскій конференції Kubecon + CloudNativeCon в 2019 році взяло участь 12 тис. осіб. В найближчому майбутньому не очікується уповільнення зростання Kubernetes. Наприклад, платформа Docker Enterprise недавно  була продана  компанії  Mirantis.

4. Архітектура програмного забезпечення: мікросервіси стануть мейнстрімом

Щодо парадигми архітектури програмного забезпечення, як показує Google Trends, триває перехід до  мікросервісної архітектури.

Одна з причин розвитку мікросервісної архітектури полягає в тому, що вона ідеально підходить для швидкої розробки програмного забезпечення в Cloud Native. Однак, як ми  вже відзначали, у багатьох випадках використання такого типу архітектури - завдання не з простих. Тому  монолітна архітектура не зникне з поля зору.

5. Мови програмування: Python з'їсть світ

Будь то машинне навчання, аналіз і обробка даних, веб, розробка корпоративного програмного забезпечення або фотографування чорних дір, Python  всюди. Відомий сервіс ранжирування мов програмування TIOBE оцінив Python як третю за популярністю мову програмування після Java і C:

20 тенденцій програмування в 2020 році

Що ще цікавіше, популярність Python в 2019 році подвоїлася (з 5% до 10%). У рейтингу TIOBE є багато недоліків, але він найбільш поширений.

6. Програмування: Java і JVM

Як показує індекс TIOBE, Java залишається домінуючою мовою програмування на планеті і навряд чи сильно втратить позиції в 2020 році. JVM - один з кращих компонентів розробки програмного забезпечення. Kotlin, Scala, Clojure, Groovy використовують JVM в якості середовища виконання. Однак недавно Oracle  змінила ліцензію на JVM.

Компанії будуть зобов'язані заплатити за підписку. На щастя, OpenJDK як і раніше буде містити JVM безкоштовно.

20 тенденцій програмування в 2020 році

JVM-мови, очевидно, не дуже підходять для сучасних  безсерверних обчислень. Тому Oracle, керуючись результатами  GraalVM, прагне, щоб Java стала більш гнучкою, швидкою і краще вписувалась в безсерверні обчислення. Існують два привабливих проекти, що знаходяться на стадії розробки. Перший - фреймворк  MicroNaut. Другий проект - фреймворк  Quarkus. Обидва фреймворка використовують GraalVM.

7. Java: Spring

Ще недавно в розробці корпоративного програмного забезпечення існувала конкуренція між Spring Framework і Java Enterprise Edition (JavaEE). Але компанія Oracle поступилася конкурентам. Це призвело до створення Jakarta EE, коли Oracle відкрила вихідний код Java EE.

Spring Framework виграв JVM Enterprise Framework, швидко зреагувавши на мінливе середовище, зокрема, підтримку Cloud Native. У 2020 році Spring Framework стане фреймворком номер один в екосистемі JVM.

8. Мови програмування: зміцнення позицій Rust, Swift, Kotlin, TypeScript

У 2000-х роках в ландшафті мов програмування спостерігався явний застій. Розробники були впевнені у відсутності необхідності нових мов програмування. Адже Java, C, C ++, JavaScript і Python відповідали нагальним потребам. Але ось Google створив  Go, а в останнє десятиліття з'явилося багато цікавих мов, таких як Rust, Swift, Kotlin і TypeScript.

Старі мови програмування часто не здатні використовувати переваги останніх змін в апаратному забезпеченні (наприклад, багатоядерність, більш швидкі мережі, хмарні обчислення). Іншим фактором є те, що сучасні мови орієнтовані на зручність розробника, тобто швидку і легку розробку. В  опитуванні розробників на StackOverflow  про улюблені мови лідирують сучасні мови (Rust займає перше місце чотири роки поспіль):

20 тенденцій програмування в 2020 році

Нещодавно Microsoft оголосила, що використовує Rust в створенні безпечного програмного забезпечення. Компанія Amazon повідомила про спонсорування проекту Rust. Мова програмування Kotlin стала основним конкурентом Java в світі JVM, коли Google оголосила про офіційну підтримку Kotlin в Android.

Angular підтримує TypeScript в якості основної мови програмування замість стандартної JavaScript.

9. Web: JavaScript продовжить панувати

Колись JavaScript не була сильною мовою програмування, і фронтенд працював в основному з використанням бекенд-фреймворків, таких як JSF, Ruby on Rails, Django, Laravel і рендеринга на стороні сервера. Положення змінилася, як тільки в 2014 році на сцену вийшов AngularJS. З тих пір з'явилося багато інших JavaScript-фреймворків (Angular 2+, React, Vue.js, Meteor.js), і JavaScript тепер король веб-розробки. Завдяки розвитку мікросервісної архітектури, JavaScript-фреймворки ще сильніше зміцнять позиції у фронтенді в 2020 році.

10. Веб-фреймворки JavaScript: React рулить

React зробив найбільший вплив на веб-розробку за останнє десятиліття і врятував Facebook в боротьбі з Google+. React привніс деякі свіжі та інноваційні ідеї у фронтенд-розробку, наприклад, Event Sourcing,  Virtual Dom, одностороннє зв'язування даних, розробку на основі компонентів і багато іншого.

20 тенденцій програмування в 2020 році

Ці ідеї серйозно вплинули на співтовариство, змусивши Google відмовитися від AngularJS і, запозичити багато що у React, повністю переписати Angular2 +. Як показує наведена нижче статистика завантаження NPM, React сьогодні це домінуюча веб-платформа JavaScript.

11. Розробка додатків: нативні додатки

У сфері мобільних додатків поступово затихає шум навколо гібридної і кроссплатформенної розробки. Хоча ці підходи і забезпечують високу швидкість створення додатків, нативна розробка дає кращі призначений для користувача досвід і продуктивність. Для великих компаній такий тип розробки залишається в пріоритеті.

Наприклад, Airbnb опублікувала докладне повідомлення, чому компанія відмовилася від платформи гібридних додатків React Native.

Хоча Facebook і намагається вдосконалити React Native, а Google просуває власну платформу Flutter, вони в основному підходять для прототипування або легких додатків. У той же час Google і Apple продовжують просувати мови нативних додатків власних платформ (відповідно Kotlin і Swift).

12. Розробка гібридних і кроссплатформенних додатків: React Native

Існує ряд випадків, коли гібридна або кроссплатформенна розробка являє собою прагматичне рішення. Facebook створив React Native на основі успішного і зрілого веб-фреймворку React. Як і його веб-аналог, React Native це домінуюче середовище для створення таких додатків.

20 тенденцій програмування в 2020 році

Flutter від Google продуктивніший, але використовує поки що не надто поширену мову програмування  Dart.

13. API: REST

REST став самим широко використовуваним методом комунікації між службами на основі API. Хоча є і такі інструменти як gRPC (Google) або GraphQL (Facebook). Обидва сервіси представляють цікаві технології, але з різними можливостями.

Google розробив gRPC як реінкарнацію технік віддалених викликів процедур (наприклад, SOAP). Замість JSON для обміну повідомленнями використовується Protobuf. З іншого боку, Facebook в якості агрегуючого шару розробив GraphQL , щоб уникнути багатослівних і частих викликів REST. Як gRPC, так і GraphQL чудові в тих областях, де вони використовуються. Але в порівнянні з REST це лише додаткові методи.

14. Штучний інтелект: TensorFlow 2.0

В області глибокого навчання провідними гравцями є Google і Facebook. TensorFlow швидко став основною бібліотекою Deep Learning. Google навіть представив  спеціальний тензорний процесор  для прискорення обчислень TensorFlow.

20 тенденцій програмування в 2020 році

Facebook випустив бібліотеку глибокого навчання PyTorch. Існує  невелика різниця в тому, як працюють ці платформи. TensorFlow використовує для своїх обчислень статичний граф, тоді як PyTorch застосовує динамічний підхід. Перевага використання динамічного графа полягає в тому, що він може коригуватися на льоту. Крім того, PyTorch дружній до Python, який укорінився як основна мова програмування в Data Science.

І ось, поки PyTorch набирав популярність, в жовтні 2019 року Google випустив TensorFlow 2.0 , який використовує динамічний граф і більш зручний для Python. З огляду на розвинене співтовариство TensorFlow, можна припустити, що TensorFlow другої версії буде домінуючою бібліотекою для глибокого навчання в 2020 році.

15. Бази даних: верховенство SQL

Колись на хвилі  інтересу до NoSQL  багато говорили про обмеження SQL. Минув час, галас вщух, люди зрозуміли, що світ не може жити без SQL. Нижче представлений рейтинг найпопулярніших баз даних.

20 тенденцій програмування в 2020 році

Як показує таблиця, бази даних SQL займають перші чотири місця. Причина домінування SQL полягає в тому, що він надає довгострокові транснаціональні гарантії ACID, які є найбільш важливою вимогою для бізнес-додатків. Бази даних NoSQL пропонують горизонтальне масштабування, але ціною порушення гарантії ACID.

Два рішення частково відповідають вимогам «основної бази даних»: Amazon Aurora  і  Google Spanner. Aurora надає практично всі функції SQL, але не горизонтальне масштабування записів, тоді як Spanner пропонує горизонтальне масштабування, але не підтримує багато функцій SQL. Сподіваємося, що в 2020 році дві бази даних стануть ближчими, або хтось третій запропонує «розподілену SQL-БД».

16. Data Lake: MinIO вийде на перше місце

Багато компаній зберігають дані і в OLTP - і в OLAP -системі, щоб підтримувати відповідні ACID-вимоги і вирішувати аналітичні завдання. Звичайно є й інші види зберігання, наприклад, для пошуку ( Solr ,  Elasticsearch ) або обчислень ( Apache Spark ). Компанії будують свою платформу на основі озера даних (Data Lake): інформація копіюється в нього з OLTP-баз, а інші типи додатків (наприклад, OLAP, пошук) використовують озеро даних в якості свого джерела.

Розподілена файлова система Hadoop (HDFS) була де-факто озером даних до тих пір, поки Amazon не випустили Amazon S3 . Масштабна і дешева, служба S3 незабаром стала Data Lake для багатьох компаній. Єдина проблема полягає в тому, що використання S3 тісно пов'язує платформу даних з хмарою Amazon AWS. Хоча в Microsoft Azure є сховище BLOB-об'єктів, а в Google - аналогічне сховище об'єктів, вони не сумісні з AWS S3.

20 тенденцій програмування в 2020 році

Нове S3-сумісний сховище  MinIO  може стати порятунком для багатьох компаній.

Microsoft  анонсувала обслуговування MinIO в Azure Marketplace. Якщо Google GCP і інші платформи також введуть підтримку MinIO, це буде великим кроком на шляху до мультихмарних рішень.

17. Розрахунок великих даних: Spark

Apache Spark  зайняв місце Hadoop як короля обробки пакетів розподілених даних. Spark навмисно працював з такими обмеженням MapReduce, як збереження даних в сховищі після кожної великої операції. Хоча Spark використовує для пакетної обробки і процесор, і з'їдає пам'ять JVM, схоже, що він буде добре справлятися зі своїми основними завданнями і в 2020 році.

18. Потік великих даних: погляд у майбутнє

Ще кілька років тому обробка потоків в реальному часі була неможлива. Зазвичай використовувалось мікропакетне середовище, таке як Spark Streaming. Однак ситуацію змінив  Apache Flink. Конкурувати з Spark він зміг після того, як в січні китайський технічний гігант Alibaba купив Data Artisan - компанію, що стояла за Apache Flink.

19. ByteCode: масове впровадження WebAssembly

Найбільша прикрість JavaScript полягає в тому, що він повільний, оскільки движок JavaScript повинен читати, аналізувати та обробляти текстове «абстрактне синтаксичне дерево» JavaScript. Інша проблема JavaScript в тому, що він однопотоковий і не може використовувати переваги сучасного обладнання (багатоядерних графічних процесорів). В результаті багато додатків, що вимагають великого обсягу обчислень (ігри, тривимірна графіка) не можуть нормально працювати в браузері.

20 тенденцій програмування в 2020 році

Співдружність декількох компаній на чолі з Mozilla створили WebAssembly - низькорівневий формат байт-коду для браузера. І вже випущено  MVP WebAssembly, підтримуючий С ++ і Rust.

20. Кодинг: стратегії Low-Code / No-Code будуть набирати обертів

Швидка цифровізація показала, що існує величезний розрив в попиті і пропозиції розробників. Багато компаній не можуть реалізувати свої ідеї через брак програмістів. Щоб знизити бар'єр входження, робиться спроба зробити розробку програмного забезпечення без коду ( No Code ) або з мінімальною його кількістю (Low Code).

Мета цього руху полягає в тому, що будь-хто міг створювати ПО, якщо у нього є відмінна ідея, але немає досвіду програмування. Хоча можна скептично ставитися до використання подібних каркасів у програмування вони можуть закласти основу для інших проектів.

Джерело перекладу


0 комментариев
Сортировка:
Добавить комментарий