Pull to refresh
0
Rating

Ммм… Супер язык… Дайте мне Си++ пожалуйста!

Intel corporate blog

Решил поддержать заметку "Миф о супер языке" и обратить внимание на два важных момента, которые обычно выпадают из поля зрения при обсуждении языков программирования.

Момент 1. Библиотеки


Если мы говорим о разработке настоящих программных проектов, то мы не можем рассматривать язык отдельно от сопровождающих его библиотек. Сам по себе язык может быть интересен и самодостаточен, только при написании демонстрационных проектов и в академических исследованиях. Когда речь идет о коммерческих проектах, требующих разнородной функциональности и которые будет необходимо поддерживать в течении нескольких лет, то в первую очередь рассматриваются библиотеки/пакеты/старые наработки, которые позволят реализовать все необходимое. И только потом имеет смысл говорить о языке программирования.

Момент 2. Константная сложность


Выскажу свое лично мнение, которое возможно спорно, но по ощущению все обстоит именно так. Сложность средней или большой программы является некой константной величиной, которую трудно изменить. Язык упрощает/усложняет написание программы в промежутке всего 10-20%.

Взяв модный C# против Си++ можно говорить, что он позволяет существенно сэкономить время в написании, так как автоматически освобождает память. Не нужен бесконечный контроль над указателями, написании и использование различных разновидностей auto_ptr. Я возражу. Возможно, это именно так для маленьких проектов, но в больших от сложности никуда не спрячешься. В качестве примера, перескажу случай, услышанный от одного знакомого.

Проект изначально задумывался достаточно большой. Был выбран C# так как удовлетворял всем требованиям, а также упрощал разработку в сравнении с Си++. Года два разработка продвигалась отлично. Однако когда проект превысил некий уровень сложности и объема, проявился весьма неприятный артефакт. Поскольку процесс высвобождения памяти неконтролируем, то временами в работе приложения стали возникать паузы в 1-2 секунды, в течении которых система разбирается с памятью, что освободить, что нет. Согласитесь весьма неприятно, когда интерфейс замирает на две секунды, когда ты просто вводишь информацию с клавиатуры в поля. Руководство посчитало такое поведение приложения неприемлемым, так как оно раздражало пользователей. Было сломано много копий. Вроде и не разработчики виноваты, а делать что-то надо. Сейчас занимаются тем, что делят проект на две взаимодействующие части: интерфейсную и обрабатывающую от нее запросы. Идея в том, что легкий интерфейс остается всегда живой.

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

Вывод


Относиться к новым модным языкам следует спокойно. Даже не имеет смысла обсуждать их достоинства и недостатки. Стоит познакомиться с новыми возможностями и не более. Начиная новый проект, перед вами будут иметься определенные условия, и выбор возможно придется делать между старыми добрыми Си/Си++/Fortran. И только если условия позволят широкий выбор, вот тогда и будет смысл вспомнить и подумать над выбором Super X или Super Y.

P.S.


Считаю, что лучше синица в руках, чем журавль в небе. Если хочется изучать новое, то сейчас лучше изучать инструменты от Intel. Скачивайте Parallel Studio, смотрите. Вот что позволит скоро легко и просто писать программы для параллельных систем. Ближайшее и не самое ближайшее будущее для нас это параллельность!
Tags:
Hubs:
Total votes 82: ↑49 and ↓33 +16
Views 14K
Comments 130
Comments Comments 130

Posts

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева