узри взором внутреним C(императивный ассемблер) + рантайм для «безклассовой» обьектной модели - вот такое Г вытесняет сейчас C++ из области майнстрипа в нишу где много С++ легаси кода - т.е новые проекты сейчас реже в С++ начинают (я про область где в проектах компилируемое до железа)
т.е обьектная модель С++ был компромиссом и можно продолжать писать на С++ как на специфическом С с перегрузкой охренно понятной стратегией размещения динамических сущьностей (на стеке, на кучи компилятор умный он сам тебе поможет) и без встроеного GC - ну круто.
так что если макось сменит уинду на рынке ширпотреба ибо всё вокруг 64битное (более или менее) так что достаточно.
в objС классы рантайма , а не компайлтайма(структура ,наследование и все дела)
все языки массовые - мультиНЕХальные.
со стороны энтерпрайза C++ подпёрт Java (бюрократия) и C# (уинда)
со стороны эмбеддеда С
cо стороны бытовой электроники ObjC
т.е C++ ещё будет коптить небо десятилетия - как Фортран - однако новоё на нём нет смысла начинать , ибо С++ не фронтир уже и не настолько низкий (C) чтоб быть наименьшим фактором.
Но мой скромный опыт работы с этой библиотекой говорит (как-то от нечего делать тыкал spirit), что её можно использовать лишь для забавы: любая ошибка порождает многостраничный, абсолютно нечитаемый выхлоп компилятора. Единственный способ найти эту ошибку - планомерное комментирование и локализация.
о да! Компилируется долго, и имеено со спиритом я сталкивался с gcc: aborted (или что-то в этом роде)
вообще я хотел выяснить, нужно ли знание с++11 на современном рынке труда. Т.е. допустим, [забугорная]контора ищет С++ разработчика - они уже имеют в виду С++11 или старый стандарт?
А 2003 не хо?
Есть один проектик в нашем вузе, считается передовым таким и уникальным, на него ещё регулярно первокурсников тащат. Под более новыми студиями не работает.
Да хрен с ним, с ВУЗом. От них я всего ожидать могу.
З.Ы. У нас специально обученные люди уже давненько пилят переход на 2008-ую (ЕМНИП только из-за распараллеленой компиляции) и пока недопилили. Потому что кода и подпроектов дофигища.
только для сообщений используется утиная типизация.
А вот тут не совсем верно. Не утиная, а динамическая ( и уже динамическая влечет утиную). Утиная типизация присутствует и в статически типизированных языках (С++, OCaml). А в ObjC - динамическая типизация.
Выражения там имеют вполне определённый при компиляции тип
Та часть язык что от С - да, статически, но та часть что от SmallTalk - динамически типизированная: [[otherObject getObject] doSomething] - тип [otherObject getObject] статически может быть не известен => тип всего выражения не известен, просто он потом приводится автоматически к типу переменной, куда присваивается это выражение.
В утиной статической типизации ошибки об отсутсвии метода возникают на этапе компеляции :
struct A { void a() {}; }
struct B { void a() {}; }
struct C { void m() {}; }
template<T> function dummy(T * t) {
t.a();
}
dummy(new A()); // OK
dummy(new B()); // OK
dummy(new C()); // Compile time error
Максимум варнинг выдаст. Ну а питон в этом случае бросает исключения.
А итог один - программу на ObjectiveC трудно верифицировать статически, без запусков на всевозможных ручных и автоматических тестах. В C++11, кстати, появилось несколько новых фич для проверок на этапе компиляции. Жаль, что пока не могу юзать - override/final только в GCC 4.7 появился, да и static_assert может отсутствовать на некоторых компиляторах. Кстати, какие ещё фичи для статических проверок имеются?
В чём причина? Неужели, если писать кошерно под 2003 студию, то потом это нельзя будет скомпилять под 2010?
Я думаю, проблема лишь в том, что проект написан через одно место, используя грязные хаки, вендор-специфик фичи и прочий кал носорога. А если так, то сами себе злые буратины.
Не сработает, если запихать static_assert в класс. Вариант с массивом вроде бы должен работать везде, где надо. В качестве fallback вполне сойдёт макрос с двумя параметрами, который просто игнорирует второй параметр. Ну не будет красивого сообщения, но главное, что компиляция обломается.
Люблю: Scheme, Forth, APL, Smalltalk, языки Вирта и им подобные
Не люблю: C++, Haskell
О, член тусовки его Величества VSL. Но почему тогда в списке нужных нет Common Lisp? О.о
Но от цпп никуда не отвертеться, слишком уж много на нём написано и слишком он раскручен чтобы выпилиться из индустрии.