powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не дадим C++ в обиду
25 сообщений из 105, страница 1 из 5
Не дадим C++ в обиду
    #32238332
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удивительно малая активность в этом топике, да и то, больше по BCB.
А как насчет "честных" С++ программ?

Самое неприятное в ситуации с C++, что всю мощь этого языка многие компиляторы стали поддерживать только несколько лет назад. Это зело удивительный факт, если учесть, что подавляющее большинство системных и прикладных программ на столе рядового пользователя написаны именно на нем.

Правда, это доля с каждым годом все уменьшается. Правомерный вопрос почему ?
Чем та же Java или C# лучше С++, что так активно его вытесняет? Попытаемся перечислить основные причины, и оценить степень их серьезности:

В пользу Java и С#:
1. Java и C# имеют систему автоматического сбора мусора. Это освобождает программиста от дополнительных затрат внимания при проектировании/кодировании.
2. Java и C# имеют способность оперировать мета-информацией, т.е. данными об устройстве классов.
3. Java и C# идут в поставке с мощнейшими и абсолютно бесплатными библиотеками пригодными практически на все случаи жизни.
4. Java и C# не могут работать с памятью напрямую (unsafe в C# пока не рассматриваем), что позволяет рассматривать это качество как "защиту от дурака"
5. Программы на Java и С# обычно при прочих равных условиях состоят из меньшего числа строк и требуют меньше времени на отладку (самое большое и стойкое заблуждение).

В пользу C++:
6. С++ позволяет использовать множественное наследование не только интерфейсов, но и реализации.
7. С++ позволяет работать с памятью напрямую, что при умелом использовании может дать приличный выигрыш в эффективности.
8. С++ имеет такое средство как шаблоны, уникальнейший и, к сожалению, плохо понимаемый большинством разработчиков механизм.

(пунктов в обоих списках могло быть гораздо больше, но и этого достаточно для начала обсуждения)

Теперь попробуем достойно ответить по пунктам-минусам.
>1. Для С++ можно использовать технологию COM для аналогичных целей. Однако, учитывая что эта технология совершенно не использует возможностей языка (т.к. предназначена для "межязыкового" общения), всерьез ее рассматривать не будем. На данный момент у меня есть отлаженная реализация классов и механизмов, которые решают эту проблему именно используя все возможности языка С++. Т.е. практически любые классы, которые написаны на C# или Java переводяться один-в-один (с точностью до мелких особенностей конструкций) на C++ c применением этой технологии. (правомерный вопрос про reflection - в следующем пункте).

>2. Какой процент классов в реальном приложении на Java и C# использует reflection? Если предположу, что 5% - это с запасом (я не беру специфические приложения) Использование для этих случаев в С++ такое понятие как Объект Класса, плюс применение всевозможных шаблонов проектирования (типа абстрактных фабрик) позволяет довольно легко решить проблему динамического создания различных экземпляров классов в зависимости от различных обстоятельств.

>3. На мой взгляд именно этот пункт (а не какие другие, учитывая только что сказанное) и является решающим. Эти библиотеки обеспечивают бОльшую начальную степень готовности пустого приложения для выполнения множества повседневных задач. Исторически, библиотеки под C++ стоят немало, и я еще не видел ни одной библиотеки хотя бы чуть-чуть сравнимой с тем, что дали нам Sun и Microsoft (.NET) сейчас. Причем, в пылу "горячей конкуренции", абсолютно даром . (чем весь мир и не преминул воспользоваться).

>4. Язык С++ можно рассматривать со многих сторон, и как довольно низкоуровневый и как довольно высокоуровневый. В этом его и сила и слабость. И здесь может помочь только строжайшая дисциплина кода. Могу предложить вариант, которым успешно пользуюсь много лет: когда кодируем участки кода, имеющие прикладной характер, строго придерживаемся стиля Java, C#, VB. Если тянет сделать что-то "нехорошее" ( п.7. ), нужно спросить себя "а возможно ли такое на этих языках". Если ответ "нет" - значит однозначно нет. Все более-менее сложные или близкие по характеру к системным задачи необходимо оформлять в виде самодостаточных абсолютно безопасных и имеющих простой внешний интерфейс классов. Все это, понятное дело, азы . Но имено нестрогое следование этим азам снискало такому мощному инструменту дурную славу. Почему программистам (а программист - это звучит "гордо", и это не пафос, это раздел человеческой деятельности требущий практически идеальных мозгов), так вот, почему программистам обязательно "давать линейкой по пальцам", в виде языков с заведомо и специально ограниченными возможностями, только для того, чтобы повышать надежность программ? Представьте только ход рассуждений разработчиков языка Java, когда они убирали оттуда все более-менее сложные и интересные конструкции языка С++ перед тем отправить Java в программистские "массы" (стадо). (Мне - обидно :)). Язык Java не люблю до сих пор, с С#, конечно, пообщаемся, там нам хоть что-то "вернули") .

>5. Самый-пресамый интересный момент. Правда жизни в том, что любые алгоритмы и любые иерархии классов, разработанные на C++, обычно оказываются как минимум вдвое меньше аналогичных на Java или там C#!!! (используя возможности 6 и 8 ). И занимают на разработку и отладку примерно вдвое меньше времени и сил. (Хотелось бы, чтобы проектировщики и системные аналитики обратили свое внимание на этот интересный факт).
Наследование реализаций и применение шаблонов - это уникальнейшие и мощнейшие инструменты, которые, почему-то нечасто используются прикладными программистами на С++. (может из-за "воспитания" на BCB?) В то время, когда програмистам на Java и C# приходится имплементить свои интерфейсы в КАЖДОМ классе-наследнике (или применять уродливые парадигмы адаптеров), в С++ мы имеем возможность лишь ОДНОКРАТНО реализовать и отладить интерфейс. Да и применение интерфейсов в чистом виде в среде чистого С++ неоправдано, я предпочитаю базовые библиотечные классы, выполняющие аналогичную роль - это экономит время, уменьшает размер программ и повышает эффективность.
Так почему же программы на С++ обычно столь громозки? А вы возьмите любую немаленькую программу на С++ и исследуйте ее на предмет соотношения количества кода общего назначения (который мог бы уже быть, как он есть в библиотеках .NET) и кода, относящегося непосредственно к прикладной области. Результат анализа обычно плачевный . Примерно 40%-80% это код, которого могло не быть . Т.е. каждый программист на С++ пишет свой очередной тысячный велосипед. И проектирование программы на С++ сводится к тривиальным и оскорбительным вещам: выбрать МИНИМУМ используемых средств и известных методологий общего назначения, дабы наша программа не превратилась в ходячую библиотеку. Т.е., на мой взляд, п.3 - это и есть тот камень предкновения. Таким образом, спорить о неких достоинствах языков в отрыве от среды, в которой они работают - бессмысленно. Языки типа Java и C# изначально по своим возможностям являются подмножествами языка С++, следовательно, утверждать, что эти языки мощнее - элементарно неграмотно . То же самое касается и насчет размера программ, написанных на С++. Повторюсь, при прочих РАВНЫХ условиях, программы на С++ гораздо короче и требуют гораздо меньше времени на разработку.

Резюме. Что дальше?
Дальше попытаемся представить себе примерный порядок работы программиста над прикладным проектом. Пусть проект будет не маленький, т.е. ситуацию написания программы в лоб отбрасываем. Прикладной программист/разработчик, исследуя полученные спецификации, пытается спроецировать сущности предметной области на разрабатываемые конструкции/типы (классы, структуры), а взаимодействия между этими сущностями описывает в виде процедур (в чистом ООП - методы классов). В конечном итоге, если разработчик шел по правильному пути, он получает отлаженный набор классов, в рамках которого решение любых задач из требуемой предметной области оборачивается весьма несложной задачей и обходиться в малое число строк исходного кода.
Т.е. на старе мы имеет некий уровень, "стартовый" уровень. Это то, что дано нам языком и библиотеками, имеющимися в распоряжении. И есть уровень некоей готовности под определенную прикладную область, "прикладной" уровень. Так вот, в случае языка С++, мы имеем возможность "подобраться" к прикладному уровню гораздо ближе, чем в случае Java и C#. Нам в этом помогает возможность переопределения практически ЛЮБЫХ операторов языка, что делает синтаксис программы наглядным а суть алгоритмов - очевидной, а так же теже самые шаблоны. Не стоит забывать, что в С++ шаблонными могут быть не только типы, но и отдельные функции, а так же отдельные методы классов внутри обычного не шаблонного класса, что позволяет нам обощать алгоритмы для работы с различными типами или специфировать их (частичная спецификация шаблонов) со сколь угодной степенью детализации.
Теперь насчет того самого "стартового" уровня. Ситуация такова, что за последние несколько лет сообщество С++ программистов так или иначе в меру своих сил и свободного времени решали отдельные задачи, т.е. уже имеется в наличии очень много исходного материала. (sourceforge, codeproject, codeguru, и еще миллион ресурсов). При желании, и наличии единомышленников, можно попытаться собрать некий framework, на основе этого самого материала, вместо того, чтобы каждый раз писать новый. У самого есть масса наработок, которые надо бы классифицировать, сделать легкий рефакторинг и (я надеюсь, с удовольствием) использовать.

Кто за - поднимите руки!
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238378
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Толково написано.
Особенно насчет >40%. Но пусть в меня кинут камнем, если можно было обойтись без этого :)
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238381
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я за !!!

но вот я пока не могу никак слесть с BC++
а так скоро видимо на VC++ перейду ..

но тут да придется попотеть ,
MFC ,ATL придется изучать ну и в догонку STL :((
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238396
WolfHound
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во-во беда всех билдеровцов STL не знают. Да и STL под билдером толком не работает.
И вобще не забываем про www.boost.org
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238411
Достойно.

ИМХО, одна из причин активного продвижения языков со слабой типизацией - возможность быстро склепать что-то условно работающее не задумываясь о дальнейшем развитии продукта и без учёта некоторых вещей , которые естественным образом учитываются C++-программистами.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238420
ADB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"ИМХО, одна из причин активного продвижения языков со слабой типизацией - возможность быстро склепать что-то условно работающее не задумываясь о дальнейшем развитии продукта и без учёта некоторых вещей, которые естественным образом учитываются C++-программистами."

Это Java то язык со слабой типизацией? Ну-ну.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238441
2adb Хорошо: с сильной динамической типизацией. Убогости Java как языка это всё равно не отменяет. На мой вкус, разумеется. :)

К тому же, манера сводить всё к одному базовому Object... ну да... ну да...
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238457
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 adb

К сведению поклонников Java - это язык с крайне низкой степенью типизации. Java-библиотеки сводят свои программы к оперирования над Object, что не есть очень быстро, т.к. динамические преобразования типов во время исполнения тоже чего-то да стоят (в доказательство своих слов могу отослать к исходникам Java VM: http://www.kaffe.org )

С 1997-го (поправьте, ели ошибаюсь) в С++ утверждена конструкция dynamic_cast (хотя реально использовалась гораздо раньше), которая динамически приводит типы не хуже, чем это делает Java. Конструкция typeid() позволяет узнать имя типа и сравнивать типы, так что, все это у нас есть.

Когда говорят, что C++ - это язык с сильной типизацией, то имеют ввиду, что это язык с сильной статической типизацией, позволяющий еще на этапе компиляции отлавливать массу ситуаций, которые Java-программисты отлавливают при отладке.

Более того, частое использование динамического приведения типа - это признак дурного тона для С++ программы. Если есть иерархия/семейство классов, требующие взаимного приведения, предпочитаю в этом случае в один из базовых классов включать виртуальные функции, типа:
Код: plaintext
1.
virtual Control* ToControl() { throw ConversionError(); };
virtual DataHolder* ToDataHolder() { throw ConversionError(); }

а в наследниках их переопределять, причем делаю я это лишь однократно, в шаблоне, напр.:
Код: plaintext
1.
2.
3.
template<class T, class Base> class DataControlImpl: public Base {
    Control* ToControl() { return static_cast<Control*>(static_cast<T*>(this)); }
    DataHolder* ToDataHolder() { return static_cast<DataHolder*>(static_cast<T*>(this)); }
}

Вызов виртуальной функции обходится на порядок дешевле, чем динамическое приведение типов.

2 WolfHound, 2 JibSkeart
Когда я говорил о применении шаблонов в своих программах, я не имел ввиду применение не только лишь STL или Boost , это само собой. :)
Я говорю о широком применении шаблонов как способа разработки, т.е. наряду с классами необходимо разрабатывать свои шаблоны под прикладную область в рамках своего проекта. Это дает массу преимуществ. Необходимость писать и отлаживать код шаблона лишь однажды - одно из них.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238476
WolfHound
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 vdimas Ты же не знаешь насколько я применяю шаблоны так?...
А что касается dynamic_cast то Геннадию Васильеву и не только от меня на www.rsdn.ru уже досталось... Надоело повторять что иногда он незаменим.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238512
2 WolfHound

Ну, не путай частое приведение типов и " иногда незаменим". Я, например, всегда обходился без dynamic_cast<>. В плагинных архитектурах, кстати, тоже. В Java же (и не только) и его скриптовых клонах, к сожалению, приведение типов от базового к частному - в порядке вещей (а как иначе добиться общности тех же банальных контейнеров?), что и приводит в конечном итоге ко всем специфическим для данного подхода последствиям - ненадёжности и тормознутости.

А что до этого:

А что касается dynamic_cast то Геннадию Васильеву и не только от меня на www.rsdn.ru уже досталось... Надоело повторять что иногда он незаменим.

то какой смысл доказывать что-то оппонентам, которые в упор не желают видеть очевидных вещей? Вот я и почти прекратил дискуссию. А факт признания своей неправоты в конкретном случае ещё только собираюсь дополнить обобщающими выводами. ;)

Кстати, по крайней мере продолжаю настаивать на том, что активное применение dynamic_cast<> на C++ (как и любого другого способа runtime- анализа структуры программы) приводит к снижению надёжности и эффективности работы програмы или, как минимум, к её усложнению, а следовательно, желательно, чтобы таковое было исключено.

Да, справедливости ради упомяну, что для Java тоже появились шаблоны. Только вот атомарные типы в качестве аргументов не поддерживаются, что есть весьма досадно.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238551
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2vdimas: ох, ну и идеалист же ты.

На самом деле C#/Java - они та может и не выразительней, и множественного наследования с шаблонами в них нет - но отличаются они не этим - они отличаются наличием/отсутсвием среды выполнения - и только благодаря этому они могут похоронить C++ - если не появится поставщик который добавит ее и в него. Если, например, та же MS - продолжит поддержку managed C++ - то у него есть будущее - иначе....
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238552
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к стати - generic programming - оно только у Степанова без проблем!
В том виде в котором оно реализовано в C++ - с ни куча проблем
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238611
WolfHound
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Геннадий Васильев
Блин ну и упертый же ты...
1)Тормоза
При создании объекта который сам посебе весит насколько килов, происходит связь с базой данных и заполнение полей из базы... Короче рядом с этим затрыты на dynamic_cast не видимы даже под микроскопом.

2)Снижение надежности
Да ну ты брось фигня какая. 99% программы построено на статической типизации, а оставшийся пороцент будет громко материться при попытки поставить термометер в место уровнемера или математику для другого уровнемера.

3)Сложность
Вот это совсем бред. После введения динамической типизации размер кода уменьшился в разы. Длл может экспортировать кучу классов
Код: plaintext
1.
2.
3.
4.
5.
DLL_EXPORT_MAP_BEGIN()
	DLL_EXPORT_SINGLETON_CLASS(C_Manager_BDSensor)
	DLL_EXPORT_CLASS(C_BDSensorLM)
	DLL_EXPORT_CLASS(C_BDSystemLM)
DLL_EXPORT_MAP_END()

Надеюсь понятно что надо сделать чтобы добавить новый класс...

Короче не неси чушь типа того что гора кода которой может и не быть повысит надежность и понизит сложность системы. Ибо чем больше кода тем больше ошибок и тем больше сложность. Что касается производитнльности то пара наносекунд при инициализации ни от чего не спасут.

Еще MaximE пытался доказавать что RTTI сосет но ему хватило пары постов чтобы понять что он не прав. Чтож ты такой упертый то?
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238687
2 WolfHound

Ну ты прежде чем меня в упёртости обвинять, постинг-то прочти внимательно:

ГВ> ...продолжаю настаивать на том, что а-к-т-и-в-н-о-е применение...

Иными словами, я явно не твой "1%" имею ввиду. :) 1%, возможно, и не повредит сильно при достойном контроле. :))

Ну, опровергать дальнейшее, согласись, уже не имеет смысла.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238716
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 all

2 all

интервью с "родителем"

Наиболее интересна - вторая половина интервью.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238750
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 WolfHound

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class ObjectBase {
public:
	template<class T> T* QueryType() {
		T* tmp=NULL;
		if (QueryType(__uuidof(T), tmp)) 
			return tmp;
		throw ConversionError();
	}

protected:
	virtual bool QueryType(const IID& iid, void**) { return false;}
};

Пример на "скорую" руку.
__uuidof работает для любых классов и структур.
для не VC++ компиляторов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#define __uuidof(x) __guidof<x>()

template<class _Ty> const GUID& __guidof(void)
{
	// no default implementation, so generate compile-time error
	// You need define __guidof() inline function for your interfaces been used.
	return void;	
}

#define DEF_IID(x)	 template<> const GUID& __guidof<x>(void) { return IID_##x; }
#define DEF_CLSID(x) template<> const GUID& __guidof<x>(void) { return CLSID_##x; }
#define DEF_GUID(x) template<> const GUID& __guidof<x>(void) { return GUID_##x; }
#define DEF_LIBID(x) template<> const GUID& __guidof<x>(void) { return LIBID_##x; }

DEF_IID(IUnknown)
DEF_IID(IDispatch)


А вообще можно придумать полно чего.
И еще, когда в проект построен так, что в нем много маленьких классов, то выключение RTTI при компиляции уменьшает размер кода раза в два.

Давайте не будем спорить - можно обойтись или нельзя без dynamic_cast. Я в свое время 4 года писал вообще на С, и ничего. Так что обойтись можно. Но кто хочет, пусть на здоровье пользуются.

Но лично мне, увеличивать в два раза размер программы из 3-5 мест, где нужно динамическое приведение типа, неохота. Лучше я потрачу лишние 15 мин на имплементацию технологии типа QueryType.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32238998
WolfHound
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 vdimas
У меня такой ощущение что меня опять недооценивают :(((
Тебя просветить во что выльется этот твой QueryType или поверишь на слово что гемороя будет много?

К стати существуют упаковщики ехешников... А RTTI и шаблонные разбухания очень не плохо жмутся. К томуже обычно программы поставляются в виде инстольника который всеравно все пакует, а если учесть что сейчас винты мереють десятками гигабайт....
Вобщем отказ от RTTI не стоит того гемороя.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32239132
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот если бы ссылки на литературку соответсвующюю кинули
было бы вообще замечательно ...

потому что для меня это почти темный лес ,
хоть и видел неоднократно .
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32239207
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что RTII?
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32239221
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Run Time Type Information (RTTI) - фича, позволяющая получать информацию о типе объекта во время выполнения программы
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32239276
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2funikovyuri
Мне ?

я имел ввиду по MFC ,STL литературу
книжек у нас в далекой галактике таких не найти :(
и еще ATL но енто хочу попозже изучать ...
в COM технологи все вьехать толком немогу .
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32239324
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не заморачивайся - все они мертвы...
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32239350
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всмусле ?
кто мертвы зачем мертвы ?
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32239527
WolfHound
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MFC скорее мертв чем жив. Теперь форточки модно на WTL писать
ATL живее всех живых.
STL будет жить пока жив С++, а помирать он и не собирается.
Почитать можно статьи на RSDN
Также полезно будет почитать описания книг.
...
Рейтинг: 0 / 0
Не дадим C++ в обиду
    #32239537
2 JibSekart
2 funikovyuri

Да никто не мёртв, все живы. :)

А STL вкупе с boost ещё о-о-очень - о-о-очень долго никуда не денутся.

2 WolfHound

У меня такой ощущение что меня опять недооценивают :(((

Не кипятись. Ради единичных случае использования RTTI вполне можно обойтись подходом, изложенным vdimas, правда, ИМХО, с небольшим усложнением для поддержки распознавания: нужно добавить что-то вроде QueryInterface и аккумулятор указателей на реализованные интерфейсы в виртуальном базовом классе. Можно будет их даже "на ходу" включать/отключать, если очень захочется.

2 vdimas

Страуструп не учитывает, однако, массовой деквалификации и "манагёризации" программистского сообщества, что неудивительно. А кроме того, "война платформ", которая одно время велась с открытым использованием C++ (библиотеки) сейчас ведётся со скрытым его использованием - те же Java и .Net как ты думаешь, на чём написаны? Ага, на нём самом. Вернее - Java, по-моему, в HP-шной реализации сделана на C++. Sun/Java вообще вся на plain-C.

offtopic

Мне вот очень интересно, кто же будет третьим игроком в противостоянии .Net - Java? Должен же появиться.
...
Рейтинг: 0 / 0
25 сообщений из 105, страница 1 из 5
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не дадим C++ в обиду
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]