Раздел «Образование».LanguagesToLearn:

О языках программирования

Напишу коротко своё мнения о разных языках программирования как о языках для изучения программирования в вузах.

Если совсем коротко, то

C++. Этот язык является мейнстримом в программировании, так как допускает высокий уровень абстракции, сохраняя возможность быть близким машинному уровню. Особого внимания заслуживает библиотека STL. Богат паттернами ООП. Слишком сложен. Не годиться для прототипирования и быстрой разработки. При неумелом использовании череват разнообразными проблемами – сложно отслеживаемыми ошибками и нагромождением классов.

Ruby. Новое слово в программировании. Концептуально продуман. Полезен для быстрого освоения важных идей и принципов разработки кода. Богат реально используемыми паттернами метапрограммирования. Удобен для прототипирования и быстрой разработки систем, не требующих высокой производительности. Очень хорош для освоения базовых концепций модульной разработки, TDD, самодокументирования кода, идей ООП и фунционального программирования (лямбда, замыкание, примеси, и синглтон методы, присоединение методов). Почти псевдокод, поэтому крайне хорош для демонстрации и отработки алгоритмических идей. Кроме того, знакомство хотя бы с одним динамическим языком крайне важно. Возможная альтернатива – Python.

Java – концептуально продуманный потомок C++, важный пример языка, транслируемого в байт код виртуальной машины, а не нативный код. После С++ программист оказывается в Java-раю, где нужно меньше думать на машинном уровне, и больше внимания уделять концептуальной красоте и модульности. Но к сожалению, также как и С++ требует большого времени изучения и освоения как самих языковых конструкций, так и стандартных технологий Java (J2EE, EJB, OSGi), чтобы оценить его в полной мере и начать использовать. Слишком громоздкий для учебных целей, и слишком “многословный” для прототипирования.

Haskel – важный пример чистого представителя функционального языка программирования. Также является языком с тщательно продуманной концепцией. Интересен тем, что активно используется в системах, где требуется большая надёжность верификации кода. Компилируется. Даёт хорошее представление о декларативном программировании.

-- ArtemVoroztsov - 30 Aug 2008