Итак, вы решили посвятить себя программиропванию! Я не
спрашиваю вас с какой целью вы оказались на этом интересном но
неспокойном пути. Сейчас ни важна ни ваша квалификация, ни ваш возраст,
ни предыдущий опыт работы. Конечно, «багаж», который вы приносите в эту
сферу деятельности имеет значение, но об этом как нибудь в другой раз.
Цель этой статьи дать очень краткий обзор основных актуальных тенденций и
перспектив развития современной разработки.
Тут картина более ожидаема, хотя специфика источника тоже накладывает свой отпечаток. Например появился никому не известный язык «net» , под которым с большой долей вероятности замаскирован тот же C#. Еще одна позиция,в которой можно усомниться Java. Авторы исследования утверждают, что они приворожили достаточно усилий для разделения требований по специалистам Java и JavaScript, и уверен, это действительно так, но вот работодатели и особенно HR агентства путают эти понятия с легкостью. Правда Java на своем первом месте, по видимому, все же вполне заслуженно.
Disclaimer:
Developers! Developers! Developers! Developers!
Steven Anthony Ballmer
А
что собственно сейчас актуально? какие языки программирования и
технологии сейчас наиболее востребованы? как ни странно ответить на эти
вопросы не так уж и просто. У начальника IT департамента крупного банка,
ведущего специалиста веб студии, или сотрудника HR отдела ведущего
интернет портала ответы могут быть разными и даже взаимоисключающими! И не полными разумеется.
Учитывая данную ситуацию попробуем обратится к более или менее объективным источникам, каковым, в первом приближении является TIOBE programming community index
— индекс популярности языков программирования представленный компанией
TIOBE и доступный для ознакомления на их сайте.
На рис 1 мы можем видеть
такой индекс на февраль текущего года (с динамикой по отношению к
прошлогоднему февралю). Несколько неожиданно, не правда-ли? На рис 2
можно видеть динамику популярности этих языков о за последние 10 лет.
![]() |
Рис 1 |
![]() |
Рис 2 |
На самом деле странности индекса TIOBE объясняются
довольно просто — это рейтинг популярности, рассчитываемый по статистке
поисковых запросов. Реципиентами для этих исследование служат такие
сайты как Google, Blogger, Wikipedia, Yahoo!, Bing, Amazon. Ну а то что
люди ищут вы и сами можете представить. Отсюда, например, высокая
популярность Basic и Pascal, жо сих пор активно применяемым
для обучения, или позиция Lisp, который, при всем к нему уважении, по
крайней мере в чистом виде,востребованным языком сейчас назвать трудно.
Тем
не менее кое что из этих данных вынести можно. Во первых это бесспорное
лидерство Java, которое просто студенческим любопытством точно не
объяснить. во вторых стремительный взлет Objective C (причины которого,
думаю не нуждаются в объяснение).
А
теперь посмотрим более приближенный к потребностям рынка и (что
немаловажно) отечественным реалиям рейтинг. Таблица приведенная на рис 3
составлена сотрудниками самого IT-шного рекрутерского портала
HeadHunter (hh.ru) на основании анализа поископвых запросов
работодателей по г Москва ( отмечается, что К десятке были близки x
(axapta), flash и ruby).
![]() |
Рис 3 |
Тут картина более ожидаема, хотя специфика источника тоже накладывает свой отпечаток. Например появился никому не известный язык «net» , под которым с большой долей вероятности замаскирован тот же C#. Еще одна позиция,в которой можно усомниться Java. Авторы исследования утверждают, что они приворожили достаточно усилий для разделения требований по специалистам Java и JavaScript, и уверен, это действительно так, но вот работодатели и особенно HR агентства путают эти понятия с легкостью. Правда Java на своем первом месте, по видимому, все же вполне заслуженно.
Впрочем давайте попробуем разобраться с упомянутыми технологиями немного подробнее.
There are just two kinds of languages: the ones everybody complains about and the ones nobody uses.
Bjarne Stroustrup
Disclaimer:
Хочу предупредить сразу все что будет написано ниже это материал для
очень жестокого «холирвара». Он переполнен штампами и чудовищным
субъективизмом, причем другим он быть не может. Что еще способен
написать действующий программист, решив сделать честный открытый обзор
конкурирующих технологий? Нет, я правда старался быть объективным, но...
Прошу одного — если вы не согласны с какими либо оценками — не
ругайтесь, просто напишите, расскажите о своем виденье и своей точке
зрения.
Этот термин на русский язык наверное правильно было бы перевести, как
«Промышленное программное обеспечение» или «Программное обеспечение
масштаба предприятия». В любом случае речь здесь идет о разработке
серьёзных решений для серьёзных бизнес задач. Тут нет места
непроверенным решениям и версиям продуктов меньше 1.0. Это мир костюмов и
сертификатов. Так на чем же пишут программы enterprise разработчики?
Java
Язык № 1 по востребованности чрезвычайно разнообразен в своих проявлениях. Собственно это не язык а платформа для создания web, enterprise,
мобильных и еще некоторых других приложений. Говорить об областях
применения этой платформы, думаю нет необходимости — она неотъемлемая
часть ключевых приложений от SAP, IBM, Oracle и многих других
поставщиков ПО для enterprise сектора. Одно перечисление основных
решений на базе Java в мире бизнес-разработки заняло бы оставшеюся часть статьи. Впрочем перечисление возможностей языка заняло бы не меньше места.
Java
часто подвергается критике, в основном за скорость исполнения программ и
неспешное развитие самой платформы. Но первая проблема, с некоторыми
оговорками уже дарвно в прошлом, а вторая, в данной отраслевой нише
скорее является достоинством.
После покупки Oracle компании Sun Microsystem (создательнице и «хозяйки» Java), и нескольких патентно-юридических
инцидентов, над будущим технологии сгустились было тучи. Но сейчас рвсе
неприятности вроде бы преодолены. Релиз Java Standard Edition 7
появился 28 июля 2011 года, на подходе 8-мая версия платформы с такими
интересными вещами, как полноценная поддержка лямбда-выражений и
динамическая погрузка методов.
C#
Хорошим началом для C#, стало то, что при его проектировании был учтен опыт неудачных решений и проблемных аспектов реализации своих предшественников — языков C++, Java, Модула и Smalltalk.
всего
за несколько лет язык стал стандартом для разработки для Microsoft
Windows, как в сфере настольного ПО, так и веб приложений (ASP.NET).
В
настоящее время актуальна пятая C#, реализованная на .NET Framework
4.5. Из последних возможностей - Code Contracts, использование позднего
связывания с языками с динамической типизацией (Python, Ruby) с
COM-объектами и объектами с изменяемой структурой. (C# 4), механизм асинхронного программирования (C# 5)
Я
не упомянул о существующих реализациях C# вне рамок Microsoft .NET
Framework? И правильно сделал, мы же говорим об enterprise разработке?
C++
Это
язык, на котором написано почти все прикладное ПО вокруг, язык легенда,
язык памятник самому себе. Не надо только думать что на этом теперь его
функции заканчиваются и времена C++ прошли. Да потребность
разработчиках на “плюсах” немного сократилась, это это по прежнему один
из самых распространенных языков программирования. На нем пишут операционные системы, драйверы устройств, приложения для встраиваемых систем, высоконагруженные
веб приложения, игры (особенно игры) и многое другое. И по всей
вероятности будут писать еще очень долго. Удачное сочетание в C++ как
высокоуровневых, так и низкоуровневых возможностей операций с данными
длают его уникальным и практически непобедимым в своей немаленькой нише
языком программирования общего назначения.
С++
не останавливается в своем развитии — регулярно принимаются новые
стандарты Очередная версия (C++11) опубликована 1 сентября 2011 года.
Она принесла довольно много интересных новшеств, как в ядро языка так и в
стандартную библиотеку (универсальная инициализация, лямбда-выражения,поддержка многопоточности и другие). В целом C++ развивается как мультипарадигменный язык, вбирающий в себя различные методы и технологии программирования, реализующий их на собственной платформе, обеспечивающей высокую техническую эффективность.
Пусть
интерпрайз разработчики остаются в своих костюмах и сертификатах, мы то
знаем, что настоящая жизнь (а зачастую и гораздо большие деньги) сейчас
бьется на территории web разработки! Интернет-компании, такие как
Google и Facebook (ну или Mail.ru group и Яндекс) сейчас предлагают
специалистам вакансии ничуть не хуже чем крупные банки и там, да! можно
ходить в футболках. Какие же технологии распространены в мире Internet
программирования? Я постарался перечислить наиболее значимые ниже. Надо заметить, что сфера применения большинства из них не ограничивается www.
PHP
Этот
же язык один из самых критикуемых и охаиваемых в современной
веб-разработке. До такой степени, что само понятие “ПэХэПэшник» стало
подразумевать такой собирательный образ полрлуграмотного студента,
клепающего сайты-визитки за копейки. Надо сказать, что хоть и не все так
безрадостно, эти инсинуации имеют под собой некоторые основания.
Первый, существенный недостаток языка — несколько хаотичная архитектура и
не проработанный дизайн. И то и другое исторически объяснимо. Дело в
том, что возникла технология, можно сказать случайно и долгое время
развивалась без какой либо продуманной стратегии. Сейчас это положение
вещей частично исправлено, но наследие бурной юности языка ещё дает о
себе знать. Правда особенности развития PHP обусловили и те качества, из
за которых он утвердился на большинстве веб-серверов по всему миру .
Язык очень хорошо выполняет свою задачу — разработка веб-приложений, что не удивительно, он разрабатывался специально для этого.
второй недостаток связан с низким порогом вхождения в технологию, породившим огромное количество низко квалифицированных
специалистов, так называемых «быдлокодеров». Является ли это большой
проблемой? Мне кажется нет. количество переходит рв качество, не
желающая развиваться «школота» уходит из профессии, оставшиеся вырастают
в настоящих «девелоперов».
Настоящие php
разработчики знают цену подобным оценкам и не сильно обращают внимание
на этот бэкграунд. Хотя серьезные проблемы у языка есть и лежат они в
облсти поддержки стандарта Unicode — именно с этим связана практически
остарновка разработки шестой версии языка.
И со всеми этими проблемами php по прежнему остается №1 технологией в веб-программировании,
а разработка на нем теперь уже мало напоминает «веб-мастеринг»
10-летней давности. PHP 5 принес с собой полноценную реализацию. ООП, а
последующие версии языка — элементы функционального программирования.
Появилось множество разнообразных Framework сред (Zend Framework, Yii,
Kohana и другие), ORM систем и других чудесных вещей, говорящих, помимо
всего прочего, о зрелости технологи. Все они (даже компилятор из PHP в C++, от компании Facebook — HipHop
) открыты и бесплатны и слорвно пирожки из сказки про Алису с надписью
«съешь меня!», только и ждут, когда их вы попробуете применить (чем это у
Кэрола кончилось вспоминать не будем).
Perl
Еще 10 лет назад (а это не много, правда) сам этот язык и воплощал концепцию веб программирования,
причем практически в одиночку. Умудрённые свитерами Perl хакеры с
презрением смотрели на всякий плебс вроде JavaScript программист, HTML
верстальщиков и уж тем более на нарождающееся племя «пэхэпэшников»,
которым по определению недоступно ничего больше домашних страничек
(первая версия PHP, тогда еще известного, как Personal Home Page, была
написана на Perl и любому перлисту это надо помнить!). Смотрели, пока не
оказались в положении динозавров в конце мелового периода. Сфера
деятельности для тех из них, кто не желал освоить новые, прежде
презираемые технологии (PHP, Python, RoR и т д) вдруг обнаружили, что
новых проектов на Perl почти не начинают, я многие старые находятся, в
лучшем случае в состоянии стагнации.
Более
того, новая версия Perl, от которой ждали очень много, никак не желала
оформляться рабочую версию! В самом деле, начало разработки Perl 6
относиться к концу предыдущий тысячелетия и она еще не закончена!
Следует
ли, исходя из вышеизложенного, понимать, что Perl это безнадежный
рудимент и лучшее, что можно с ним сделать это отнести его на свалку it
истории? Отнюдь нет! Причин тому несколько. Самую главную из них легко
поймет любой человек, которому приходилось программировать на этом
языке, хоть в каком нибудь значительном объеме. Мы (а я тоже из этих)
отлично знаем, что это чудесный инструмент, для решения самых
разнообразных задач и он просто не может быть забыт (как например или
складной нож монтировка монтировка). Вторая причина состоит в том,
изначальном назначении Perl. ведь Practical Extraction and Report Language (практический
язык для извлечения данных и составления отчётов) изначально не был
предназначен для веб, он просто идеально подошел для этой среды, как
идеально подходит для многого другого!
Кроме
того, даже если работодателю нужен php, python, RoR или даже Java
программист, знание Perl часто стоит в списке требований к соискателю.
Это естественно - огромное множество задач в www проще и естественней
решать именно с помощью этого инструмента.
Изучайте Perl, это Си для веб-программирования!
Python
Этот
язык называют любимым многие веб программисты, и это очень просто
объясняется — он прекрасен! (то что эти программисты продолжают писать
на php, perl и ли java объясняется сложнее, но не будем сейчас о
грустном). Трудно не полюбить язык с такими возможностями, таким ясным
синтаксисом и «принципом наименьшего удивления» как концепцией
существования.
Этот вечно перспективный
язык, существует по сегодняшним меркам уже давно — он создан
программистом Гвидо ван Россумом еще в в декабре 1989 года. Python
поддерживает следующие парадигмы программирования: структурную., объектно-ориентированную, функциональную, императивную и аспектно-ориентированную.
Мало? Многопоточность и интерактивный режим тоже присутствуют. И много
еще всего интересного — я же говорю. Python прекрасен!
Настолько прекрасен, что его апологеты не вынесли этого и сами решили создать ему трудности на почти ровном месте. В конце 2008,
вышла первая версия Python 3000 (или Python 3.0). В ней были устранены
которые недостатки архитектуры языка, добавлена поддержка Unicode (!),
но все это было привнесено ценой частичной потери обратной
совместимости. В результате мы сейчас имеем следующую ситуацию —
параллельно развиваются обе ветки языка. Большая часть интересных
нововведений происходит на территории Python 3. Большая часть
приложений пишется и поддерживаться пределах Python 2.x. Естественно
это положение вещей никого не устраивает и работы по перероду на Python
3 различных проектов ведеться, но проблема пока есть.
Сфера применения Python совсем не ограничена www (он собственно тоже не для этого и создавался).
На нем написаны такие известные продукты, как системы управления
версиями Mercurial и Bazaar, инсталлятор Red Hat — Anaconda,
популярный торрент сервер BitTorrent (и клиент МюТоррент) а также всеми
любимый Dropbox. В качестве скриптового языка его использует огромное
число проектов от Wikipedia до Google. Не знаю, правда ли за Python будущее, но значительная часть настоящего — безусловно.
JavaScript
Это великий язык программирования собрал еще больше пренебрежительных
оценок, чем даже PHP. И это естественно — язык никогда не
проектировался для такого применения и вообще, (как собственно и PHP)
развивался «от практики». Поначалу и применение его на веб страницах (и
только на них!) ограничивалось простыми эффектами вроде подсветкой
кнопок при наведении мыши и тому подобными мелкими «красивостями». Но
постепенно JavaScript брал на себя все большую роль по взаимодействию
www и человека, а с появлением суммы технологий, обозначенных красивым
термином Ajax эта роль стала вообще ключевой. Еще интенсивней javaScript
стал использоваться с распространением библиотек/фрэймворков,
делающих разработку сложных сценариев, приложений (да да речь идет уже о
JavaScript приложениях!) и веб интерфейсов простым и приятным
занятием. Я говорю прежде всего о библиотеки Prototype, заложившей
основы нескольких JavaScript фрэймворков, о jQuery, ставшей практический
стандартом разработки, о Ext js задающий новый уровень веб интерфейсов,
наконец о полноценной MVC среде — Backbone.js, предоставляющий каркас
для создания полноценных REST приложений.
Но
этого было мало. Новый стандарт языка разметки веб страниц — HTML5
подразумевает наличие множества JavaScript API, которые не являюсь
частью языка, говорят настоящие чудеса, как на веб-странице так и за ее
пределами. Я говорю про Geolocation API, WebRTC, WebGL и подобных
технологиях, находящихся сейчас на переднем крае развития www.
Обилие
возможностей породило Javascript безумие, которое длиться и по сей день
— на на этом языке стали писать все — 3D игры, компиляторы, DE
окружения и даже операционные системы! Правда пока эти творения скорее
более ориентированы на демонстрацию возможностей чем на практическое
использование, но зато демонстрация получается ну очень впечатляющих.
Ну
а К окончательному посрамлению скептиков, появилась платформа Node.js —
представляющая собой серверную реализацию языка, основанную на движок
V8 ( реализация JavaScript,разработанная компанией Google) Похоже скоро в интернете ничего кроме JavaScript и не останется!
Ruby
Популярность
к этому языку, разработанному японским программистом Юкихиро Мацумото
еще в 1995 году, пришла после появления в 2004-м веб-фрэймворка Ruby on
Rails. А между тем сам Ruby, без всяких каркасов, представлял собой
весьма незаурядное явление в мире скриптовых языков. В отличии от PHP
или javaScript, он не развивался спонтанно, а явился результатом
тщательно продуманных архитектурных решений (только работа над первой
версией интерпретатора длилась два года). Результат впечатляет. Ruby
это динамический, рефлективный, объектно-ориентированный
и при этом интерпретируемый язык программирования в арсенале которого
многопоточность, нереализованная независимо от операционной системы ,
сборщик мусора, строгая динамическая типизация, интерактивный режим
работы, свой пакетный менеджер и много других чудес. На Ruby написаны
такие прекрасные программные продукты, как медиапроигрыватель Amarok, программа для работы с векторными изображениями Inkscape, веб-приложение для управления
проектами Redmine. Но все же настоящие распространение и популярность
язык получил после появления «рельсов» (к каковому сам автор языка
отнесся более чем прохладно).
Ruby on Rails практически взорвали мир интернет-программирования, заставив говорить, что вот оно, будущее веб-разработки!
Надо
сказать, что частично эти прогнозы сбылись — использование фреймворков
при разработке сложных веб проектов стало стандартом. Вот только
написаны ини быпли по большей части на других языках. А Ruby on Rails,
возможно из за некоторых внутренних проблем развитя (несовместимость
версий), мир захватить так и не удалось. Возможно пока не удалось — в
лету технология не канула и развития не остановила. А такие продукты,
нкак
Твиттер, Groupon, Basecamp, GitHub красноречиво говорят о ее потенциале!
Erlang
Этот
язык программирование так же не особенно молод. Он разработан фирмой
Ericsson еще в 1987-м году и применялся для создания распределённых
вычислительных систем рв области связи.
Взрыв
интереса к Erlang пв наше время объясняется потребностью современного
www в механизме способном работать с неблокирующими асинхронными
процессами. Это Erlang умеет очень хорошо, возможно даже лучше всех. Сам
же язык реализует функциональную парадигму со всем что она
предусматривает (полиморфные функции, хвостовая рекурсия и т д) и
модель легковесных процессов. Рассматривать Erlang как язык общего
назначения, наверное следует с некоторой осторожностью, но посмотрите на
продукты, созданные с его использованием:
- CouchDB — документо-ориентированная NoSQL база данных
- RabbitMQ — платформа для реализация очередей сообщений
- Erlyvideo — мультипротокольн
ый видеостриминговы й сервер - Riak — распределённое NoSQL хранилище данных
- ejabberd — jabber-сервер, предназначенный для высоких нагрузок.
Возможно
весь этот софт достаточно специфичен, но он как нельзя хорошо
вписывается в современный мир Highload решений. весь он в той или иной
степени основан на реализуемой Erlang концепцией распределённого
программирования и у данной технологии в этой нише просто нет
конкурентов.
На этом пока все. Обзор
вселенной современной разработки никак не помещается в одной статье.
Обязательно продолжим его в следующем номере. Нас ждет разговор о
программировании для мобильных устройств, встроенных системах и многом
другом.
Комментариев нет:
Отправить комментарий