[Перевод] Какие технологии чаще всего используются на хакатонах?
Выбор языка программирования для начинающего разработчика — достаточно стрессовое занятие. Не факт, что популярный сейчас язык останется таковым через год. Еще менее вероятно, что его знание поможет вам получить более престижную работу.
Однако довольно интересно наблюдать за тем, какие языки выбирают программисты в ситуации, когда им предоставляют для этого полную свободу — когда они пишут не то, что требует от них начальник, а работают над собственным проектом без какой-либо конкретной цели.
Как, например, на хакатоне.
Не так давно ChallengePost — инструмент, выступающий в роли бэкэнд-инфраструктуры для большого числа хакатонов (включая те, что проводятся перед каждой конференцией TechCrunch Disrupt) — сменил название на Devpost. Дабы отметить это событие, его сотрудниками были собраны те знания, которые они приобрели за последний год.
О сообществе Devpost
Devpost (в прошлом — ChallengePost) — это сообщество, в котором разработчики могут делиться своими проектами, создавать свои портфолио и принимать участие в онлайн- и оффлайн-хакатонах.
В своем первом отчете Devpost составили рейтинг технологий, которые чаще всего использовали студенты в течение 2014–2015 учебного года. Новички и опытные программисты, студенты школ и колледжей — все они являются источником инноваций в области программного (а также аппаратного) обеспечения и демонстрируют одинаковую заинтересованность как в научных устремлениях, так и в создании ориентированных на пользователя продуктов.
Методика ранжирования
Во время хакатонов и в рамках составления участниками своих портфолио респондентов просили помечать тегами платформы, технологии, языки и API, которые они используют. Такой метод помогает собрать все необходимые сведения о сообществе разработчиков.
Авторы отчета изучили теги проектов каждого из участников (всего их оказалось 13 281 человек) 160 студенческих хакатонах, представивших в сумме 9 898 проектов либо на хакатонах, либо в своем портфолио на сайте Devpost.
Список технологий, используемых в рамках студенческих проектов, включал в себя языки программирования, коммуникационные API, API социальных сервисов, API платежных систем, API геолокации, музыкальные API, бэкенд- и фронтенд-фреймворки, базы данных, игровые движки, интегрированные среды разработки (IDE), библиотеки, модели «бэкенд как услуга» (BaaS), «платформа как услуга» (PaaS) и «инфраструктура как услуга (IaaS), протоколы, текстовые редакторы, аппаратное обеспечение и многое другое. Для каждой категории авторы отобрали по 5 самых популярных тегов.
Рейтинг технологий и API
Мобильные платформы:
Какие мобильные платформы интересуют программистов? 38,2% разработчиков выбирают Android, 22,7% — iOS, и лишь 4,9% используют Windows Phone. Оставшиеся 34,2%, судя по всему, с любимой платформой пока не определились.Языки программирования:
- HTML/CSS
- JavaScript
- Python
- Java
- C/C++
- PHP
- Objective-C
- C#
- Swift
- JSON
- Ruby
- XML
- Ajax
- Shell
- Processing
- Lua
- CoffeeScript
- Go
- MATLAB
- OpenGL
- R
- Groovy
- XAML
- Perl
- WebGL
- Applescript
- Scala
- GLSL
- JSP
- LaTeX
HTML/CSS и JavaScript, как и ожидалось, возглавили этот список. Программы на них запускаются в браузере, а не подстраиваются под ту или иную операционную систему, и, как правило, эти языки изучаются начинающими разработчиками в первую очередь. Поэтому если вы пытаетесь собрать команду из незнакомых вам людей (что на хакатонах случается довольно часто), то эти языки в каком-то смысле оказываются универсальными.
Примечание: HTML не является языком «программирования» в буквальном смысле: это язык разметки, то есть средство для форматирования частей документа. Но, так или иначе, это всё равно некий «язык», и им постоянно пользуются практически все веб-разработчики, так что такие семантические детали мы будем опускать.
Неожиданно видеть в этом списке Swift, так как Apple представила этот язык всего 13 месяцев назад.
Что касается API-интерфейсов, то здесь Devpost не стал собирать все в одну кучу, а разбил их на категории. И вам не помешает познакомиться с API в каждой из категорий.
Коммуникационные API:
- Twilio
- Yo
- SendGrid
- Moxtra
- Mailjet
API социальных сервисов:
- Google+
API платежных систем:
- Venmo
- Paypal
- Stripe
- Braintree
- Blockchain
Геолокационные API:
- Google Maps
- Yelp
- Google Places
- Esri ArcGIS
- Mapbox
Музыкальные API:
- Spotify
- Echo Nest
- SoundCloud
- Google Play
- Rdio
Какая коммуникационная API-платформа, согласно их данным, наиболее популярна? Twilio. Социальная? Facebook (ясное дело), затем Twitter (тоже ожидаемо). API платежных систем? Venmo, опередивший Paypal. Что удивительно, оба обогнали Stripe. Google Maps — единоличный лидер в категории геолокации, как многие могли предположить.
Лидерство Twilio в категории коммуникационных API более чем очевидно хотя бы потому, что разработчики очень часто пользуются Twilio на хакатонах. Такие разработчики встречаются чуть ли на каждом хакатоне, даже если это всего лишь один из евангелистов, действующих неофициально. Необходимым условием работы на Twilio является создание проекта на базе его API. Более того, один из ведущих разработчиков Twilio покинул компанию и основал Major League Hacking — компанию, которая занимается проведением хакатонов для студентов по всему миру.
Фреймворки для разработки приложений:
- Node.js
- Flask
- AngularJS
- Ruby on Rails
- Django
Базы данных:
- MongoDB
- MySQL
- SQLite
- PostgreSQL
- FoundationDB
Фреймворки для iOS:
- Core Location
- Mapkit
- UIkit
- Core Data
- AV Foundation
Игровые движки:
- Unity
- Pygame
- libGDX
- GameMaker
- Unreal Engine
Если говорить об игровых движках, то явным лидером является Unity с более чем 1000 представленных проектов. Следующий в списке — Pygame с менее чем 50 проектами.Интегрированные среды разработки:
- Android Studio
- Xcode
- Eclipse
- Visual Studio
- Jade
Библиотеки:
- jQuery
- Express.js
- Socket.io
- OpenCV
- D3.js
«Бэкенд как услуга» (BaaS):
- Parse
- Firebase
- Meteor.js
- MongoLab
- Amazon RDS
«Платформа как услуга» (PaaS) и «инфраструктура как услуга» (IaaS) (Топ-10):
- Azure
- Heroku
- Amazon Web Services
- DigitalOcean
- IBM Bluemix
- Google App Engine
- Linode
- Atlantic.Net
- OpenShift
- Rackspace
Утилиты командной строки:
- cURL
- Makefile
- Gradle
- Yeoman
- ngrok
Текстовые редакторы:
- Sublime Text
- Vim
- Notepad++
- Brackets
- Atom
Что же можно сказать о проектах, которые пробивают стены виртуального мира и вторгаются в мир физических технологий? Аппаратное обеспечение:
- Arduino
- Myo
- Pebble
- Leap Motion
- Oculus Rift
- Raspberry Pi
- Intel Edison
- Kinect
- Particle (formerly Spark)
- Google Cardboard
- GPS
- Servo
- 3D Printing
- Android Wear
- Meta (smart glasses)
- Google Glass
- Accelerometer
- Tessel
- Muse (headband)
- Intel Galileo
Ожидаемой королевой «железного» бала стала аппаратная платформа Arduino. Она достаточно гибкая и легко поддается изменениям, являясь «мозгами» практически каждого простого электронного проекта, и не слишком затратная, так что вы не сильно пострадаете, если сгорят две-три платы. Именно поэтому ее предпочитает большинство любителей электроники. За ней плотно идет не менее известное, но более узкоспециализированное «железо»: браслет-манипулятор Myo, умные часы Pebble, детектор движения Leap Motion и шлем виртуальной реальности Oculus Rift. Любопытно, что универсальный и недорогой компьютер Raspberry Pi оказался лишь на 6 месте.Другие API и технологии
Не все технологии, отмеченные студентами, входят в одну из категорий. Некоторые входят сразу в несколько. Ниже перечислены еще несколько технологий, попавших в разные категории:
- AlchemyAPI
- Autodesk
- Bitcoin
- Bloomberg
- Canvas
- Capital One
- Docker
- Dropbox
- Eventbrite
- Evernote
- Face++
- Giphy
- IBM Watson
- Indico
- Kimono
- Machine Learning
- Maya
- MetaMind
- Mojio
- Nginx
- OCR
- Ordr.in
- Postmates
- Priceline API
- Qualcomm Vuforia
- Rhine
- Sabre
- Selenium
- SolidWorks
- Tomcat
- TripAdvisor
- Uber
- Weather Underground
- Wit.ai
- Wolfram Technologies
- Ziggeo
Основные выводы
Большинство проектов, в которых принимала участие выборка студентов, сводилось к веб-разработке или мобильной разработке, и составленный нами рейтинг языков программирования отражает эту ситуацию. Имея в своем распоряжении 24–48 часов, студенты на хакатоне, как правило, занимались веб-разработкой с использованием API и разработкой мобильных приложений.
Несколько непривычно видеть, что Android явно превосходит iOS, однако эта открытая платформа дает преимущество студентам, которые по выходным занимаются разработкой приложений.
Несмотря на наличие в студенческом сообществе многочисленных шуток о Node.js, рейтинг показывает, что эта платформа оказалась чрезвычайно популярной в 2014–2015 учебном году.
CSS, Objective-C, Swift, и Lua занимают высокие позиции на Devpost, учитывая их применение в веб-разработке, разработке приложений для iOS и создании игр соответственно. Такие языки, как C++, R, Perl, и Scala чаще используются в корпоративных системах, бэкенд-приложениях и при обработке статистических данных и гораздо реже используются на хакатонах и в студенческих проектах.
Разработка под конкретное аппаратное обеспечение пользовалась особой популярностью у судей в 2014–2015 годах. 10% проектов-победителей сопровождались тегом «hardware», 8,2% — разработки, использовавшие Arduino, 5,3% — проекты для Pebble, 4,8% — Leap Motion, 4,5% — Myo и 3,9% — Oculus. Те, кто занимался разработкой под одну из этих платформ, занимали призовые места чаще, чем непризовые.
Во время весеннего семестра популярность Pebble, Oculus, Leap Motion, Intel Edison, Raspberry Pi, Muse и Meta возросла, вероятнее всего, благодаря финансовой поддержке компаний.
Несмотря на недавний рост интереса к базам данных NoSQL (например, MongoDB и Redis), реляционные базы данных все еще остаются довольно популярными.
Bootstrap и другие подобные инструменты для фронтенд-разработки пользуются популярностью у новичков. Конкуренция в пространстве моделей PaaS/IaaS постоянно растет, и появляется еще больше возможностей для использования методологии DevOps. В связи с тем, что модель XaaS все в большей степени превращается из непосредственно услуги в товар, лидерам индустрии и новым игрокам придется предоставлять более персонализированную поддержку, чтобы выделиться на фоне остальных.
Среди технологий, показавших бурный рост во второй половине учебного года, можно выделить Unity, Intel Edison, Bootstrap, Meteor.js, Flask, OpenCV, Jade, DigitalOcean, Ionic, Wolfram Technologies, Linode, Postmates, Capital One, Blender, Swift, и SQLite.
Вместо заключения
Помните: несмотря на повышенный интерес к этим данным, они необязательно будут отражать реальное положение вещей. Конечно, вам не помешает изучить любой инструмент из пятерки лучших, но не стоит принимать важные профессиональные решения, основываясь лишь на этих данных.
Если вы думаете, какой язык лучше изучить первым, выберите наиболее простой (JavaScript — неплохое решение), освойте ключевые принципы программирования, а затем старайтесь обращать больше внимания на детали. Но если кто-то скажет, что ваш первый язык — это неудачное решение, и вам просто необходимо изучить вместо него УльтрасовременныйЯзык2015, пошлите его куда подальше.