From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <427C9181.1020400@altlinux.org> Date: Sat, 07 May 2005 13:59:29 +0400 From: Mikhail Yakshin User-Agent: Mozilla Thunderbird 1.0 (X11/20050202) X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: ALT Devel discussion list Subject: Re: [devel] D -- =?KOI8-R?Q?=CE=C1=C6=C9=C7?= References: <427B1163.6040206@altlinux.com> <427BBA7F.3020600@altlinux.org> <20050507071417.GB22379@osdn.org.ua> In-Reply-To: <20050507071417.GB22379@osdn.org.ua> X-Enigmail-Version: 0.90.2.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 May 2005 09:59:35 -0000 Archived-At: List-Archive: List-Post: Michael Shigorin пишет: > On Fri, May 06, 2005 at 10:42:07PM +0400, Mikhail Yakshin wrote: > >>Если посмотреть, например, сюда: >>http://www.digitalmars.com/d/comparison.html >>и немножко поразмыслить, то оказывается, что в этой самой >>таблички совершенно наглым способом много где врут. > > > Значит, в /dev/arse их. Если в малом врут -- и в большом подведут. Ну, например: Lightweight arrays Yes Yes Yes No No Не знаю, что они там подразумевали под этим сакральным утверждением, но обычное объявление массивов без каких-нибудь new Vector() или new Array() - в Java и C# вообще-то есть. То, что они в результате получаются не какими-то отдельными специфическими сущностями - массивами, а полноценными объектами - это скорее плюс языка, его куда более продуманная объектная парадигма, а не минус. Resizeable arrays Yes No No No No Глупость какая-то. В C - есть realloc. В C++ - есть std::vector. В Java - java.util.Vector.setSize. В C# - в первом есть property System.Collections.ArrayList.Capacity, в C# 2.0 - есть Array.Resize. Built-in strings Yes No No Yes Yes Опять некорректно сравнивают. В C есть char[], который есть местный string и никакого другого там в принципе-то особенно придумать нельзя. В C++, как они справедливо замечают в сноске - std::string есть, но почему-то они хотят закрыть на это глаза. Associative arrays Yes No No No No Нагло врут. В C++ есть std::map. В Java - например, java.util.HashMap. В C# - есть System.Collections.Hashtable и даже более "продвинутый вариант" - System.Collections.SortedList. Multiple Inheritance No No Yes No No Вообще-то mixin, который достаточно активно эксплуатируется в D, по жизни был способом множественного наследования. Direct access to hardware Yes Yes Yes No No Очень пафосная формулировка, но ничего не отражающая толком. На том же C# есть возможность писать как unmanaged code, так и в принципе вещи, очень близко работающие с underlying OS. При небольшом желании - даже драйверы в оффтопике можно на нем писать... Lightweight objects Yes Yes Yes Yes No Тут они "правы", но смешна сама формулировка - если почитать, что они имеют в виду под этим. Lightweight object'ами они называют как ни странно struct, как известно, отличающийся исключительно заданной негласно по умолчанию областью видимости public. Есть немало ругани на тему того, зачем эту глупость включили в C#, так они мало того, что этот сомнительный feature включили в D - этим еще и гордятся... Independent of VM Yes Yes Yes No No Direct native code gen Yes Yes Yes No No Формально они правы - реально - если подумать - то как только в языке появляется GC, сложные типы данных, многочисленные проверки и перестраховки, возможность не сегфолтиться аппартно, а всегда нести в себе некие контрольные механизмы, которые в случае ошибки выкинут хороший exception с отладочной информацией - во всех этих случаях фактически элементы того, что делает эта самая VM просто вкомплируются внутрь бинарника программы - и все... Unit testing Yes No No No No Крайне советую почитать, что они имеют в виду под этими словами. Если принять их терминологию - все так, конечно %) Direct access to C Yes Yes Yes No No Сильно спорно в контексте C# и возможности легко использовать код на unmanaged C в нем. Generates standard object files Yes Yes Yes No No Скорее смешно, чем грустно. Правильное название этого пункта - скорее "Generates C-compatible object files"... А то вообще-то C# DLLs и Java classes - тоже вполне себе "стандартные файлы"... В общем, скорее, хочу извиниться за этот пост, он скорее всего уже здорово пахнет оффтопиком в этом списке, а еще может быть весьма flamebait-о-образным... Посему - не думаю, что эту тему стоит развивать по крайней мере здесь... -- WBR, Mikhail Yakshin AKA GreyCat ALT Linux [http://www.altlinux.ru] [xmpp:greycat@altlinux.org]