НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Java и Си еще лидеры. Надолго ли?

Набор стандартов кодирования из предыдущего поста стоит дополнить рекомендациями экспертов службы Tiobe (ежедневный мониторинг 131 млн. строк кода 607 корпоративных проектов).

[spoiler]Си:
- "Recommended C Style and Coding Standards от Bell Labs (pdf);
- "MISRA C" (127 правил UK's Motor Industry Software Reliability Association, обзор);

C++:
- "Industrial Strength C++"

Java:
- "Code Conventions for the Java Programming Language" от Oracle

C#:
- "C# Coding Standard" (pdf);
- "Design Guidelines for Class Library Developers" от Microsoft

Средства статического анализа кода.
Си:
- Splint

C++:
- PC-Lint, развиваемый аж с 1993 года, вышла версия 9.0 для Microsoft VS 2010;
Много лет ведется интересный раздел "баг месяца"!

C#:
- FxCop
- TICS Basic for C#

Java:
- PMD

- Checkstyle

Давно и регулярно Tiobe ведет топ языков программирования, отслеживая интерес к ним специалистов и корпораций. Вот ведущая двадцатка на октябрь 2011:
Java, Си, С++, PHP, C#, Objective-C, (Visual) Basic, Python, Perl, JavaScript, Ruby, Delphi, Lisp, T-SQL, PL/SQL, Lua, RPG, Pascal, Ассемблер, Ада.

Первые две позиции пока абсолютно незыблемы. Но, самое интересное, интерес практически ко всем языкам первой десятки падает -- кроме C#, спрос на который растет. Ну и Си по-прежнему стабильно важен, а Java, C++, PHP и др. заметно сдают в последние годы. Objective-C еще за пару лет очень сильно поднялся.
Язык D 22-й,  Go -- 32-й (Фортран 31-й), и остальные языки из списка 50 практически все у программистов на слуху.

То есть знание Си было, есть и будет для программиста абсолютно необходимо, а далее -- обязательно понимание ООП в духе С++ и способность быстро перейти на другой С++-подобный язык.
Skynin
Лидеры - надолго. D - интересен, но отношение разработчиков к ЯП уже другое, чем было в 70ых 80ых. Как и разработческого бизнеса - какая компания поддерживает и гарантирует развитие? какие инструментальные средства имеются (поддержка IDE, верификаторы,  ). Сколько и каких уже библиотек имеется? Насколько сложно будет переписать, перевести работающий код на новый ЯП?
Голый ЯП, мало кому нужен сейчас.

И если все же о ЯП. У D нет ниши. С++ ему не заменить. Как раз потому что придется платить за те удобства что он дает.
А для java/c# программистов он тоже неинтересен. Отвыкли от такой потребности - компиляция в натив. "А зачем??"

Go - не взлетающ был изначально. Что появлением Dart сама Google признала.

Objective-C - это временно. Держится на интересе к айфонам и айпадам. А количество их аналогов - растет. Причем там, у аналогов знакомая Java.

Про веб - не скажу. Когда JavaScript таки начнет нормально и на серверной стороне поддерживаться, тяжело конечно придется PHP

Python - отличный и универсальный ЯП. Конкурентов у него не предвидится.
Ruby - это RoR. Без него мало кому нужен. Python - "шустрее", и компания его поддерживающая - надежней.

Так что пятерка от Tiobe - надолго. Разве что в строчке PHP заменить на "for Web"

Мир программирования уже изменился. Просто новые ЯП - уже неинтересны.
Сергей Бобровский
Как полагаете, на смену Objective-C кроме Java что-нибудь еще появится?
Skynin
Пока Objective-C живет только внутри Apple - то ничего. Но стоит почитать спецификацию Objective-C, чтобы увидеть - этот язык меняется практически каждые несколько лет. В нем, в целях совместимости, оставлено почти все рудиментарное, и потому вся история изменений видна. Это как если б все возможности С++ добавляли постепенно в Си. В итоге, через десятилетия - у нас Си или С++ язык?

Java же будет основным языком пока есть стандартизированная JVM. А от JVM ни Oralce ни IBM - нет смысла отказываться. Хотя бы потому что у .NET - таже идея, а больше серьезных законодателей то и нет.
Java может сменить роль, станет "ассемблером" JVM, а в разработке одного приложения будут применяться одновременно скажем Scala и Jython.

Общая же моя мысль такая - с ростом количества работающего кода и укрупнением производителей ПО - изменения в ИТ на обсуждаемом уровне. замедляются, и будут замедляться.
Вторым фактором замедления является отсутствие новых концепций, перспектив фундаментальных изменений. Скажем - когда придуманы функциональное, логическое и объектно-ориентированная парадигмы? Есть что хотя бы в лабораториях им на смену? Значит будут только гибриды, типа Scala. А тогда сразу возникает сомнение - а окупится ли переход на новый гибрид в скорости и качестве разработки, если там вобщем-то - ничего нового?
Есть разве что некие надежды на DSL и метапрограммирование. Но и критики уже накоплено, на неуспевшие стать массовыми.

Итогом для любого нового ЯП будет - более медленное чем ранее проникновение в массы. Это уже сейчас можно зафиксировать, сколько лет языкам первой десятки Tiobe? Как раз тех самых 90ых, когда появление нового ЯП приводил в восторг, и энтузиасты брались делать реальные проекты - уже не будет.
Можно сказать - языкоделание станет скучной темой, все понимают или чувствуют что это просто игры, забавы, головоломки, к реальному программированию почти не имеющие отношения.