Таблица сранения языкво от создателей D поправленная мной
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 15:53
Оценка: 62 (15) -1 :))) :))) :))) :)))
Feature D C C++ C# Java Nemerle
Garbage Collection Yes- No No Yes Yes Yes
Functions D C C++ C# Java Nemerle
Function delegates Yes No No Yes No Yes+
Function overloading Yes No Yes Yes Yes Yes
Out function parameters Yes Yes Yes Yes No Yes
Nested functions Yes No No No No Yes+
Function literals Yes No No No No Yes ???
Dynamic closures Yes No No Yes No Yes+
Typesafe variadic arguments Yes No No Yes Yes Yes
Arrays D C C++ C# Java Nemerle
Lightweight arrays Yes Yes Yes Yes No No
Resizeable arrays Yes No No No No No
Built-in strings Yes No No Yes Yes Yes
Array slicing Yes No No No No No*
Array bounds checking Yes No No Yes Yes Yes
Associative arrays Yes No No No No No
Strong typedefs Yes No No No No No
String switches Yes No No Yes No Yes+
Aliases Yes Yes Yes No No Yes
OOP D C C++ C# Java Nemerle
Object Oriented Yes No Yes Yes Yes Yes
Multiple Inheritance No No Yes No No No
Interfaces Yes No Yes Yes Yes Yes
Operator overloading Yes No Yes Yes No Yes+
Modules Yes No Yes Yes Yes Yes
Dynamic class loading No No No Yes Yes Yes
Nested classes Yes Yes Yes Yes Yes Yes
Inner (adaptor) classes Yes No No No Yes No*
Covariant return types Yes No Yes No Yes No
Properties Yes No No Yes No Yes
Performance D C C++ C# Java Nemerle
Inline assembler Yes Yes Yes No No No
Direct access to hardware Yes Yes Yes No No No
Lightweight objects Yes Yes Yes Yes No Yes
Explicit memory allocation control Yes Yes Yes No No No
Independent of VM Yes Yes Yes No No No
Direct native code gen Yes Yes Yes No No No
Generic Programming D C C++ C# Java Nemerle
Class Templates Yes No Yes Yes Yes Yes
Function Templates Yes No Yes Yes Yes Yes
Implicit Function Template Instantiation No No Yes No No No
Partial and Explicit Specialization Yes No Yes No No No
Value Template Parameters Yes No Yes No No No
Template Template Parameters Yes No Yes No No No
Mixins Yes No No No No No* (plan)
static if Yes No No No No
is expressions Yes No No No No
typeof Yes No No Yes Yes (instanceof) Yes
foreach Yes No No Yes Yes Yes+
Implicit Type Inference Yes No No No No Yes+
Reliability D C C++ C# Java Nemerle
Contract Programming Yes No No No No Yes*
Unit testing Yes No No No No No*
Static construction order Yes No No Yes Yes Yes
Guaranteed initialization Yes No No Yes Yes Yes
RAII (automatic destructors) Yes No Yes Yes No Yes
Exception handling Yes No Yes Yes Yes Yes
Scope guards Yes No No No No Yes+
try-catch-finally blocks Yes No No Yes Yes Yes
Thread synchronization primitives Yes No No Yes Yes Yes*
Compatibility D C C++ C# Java Nemerle
C-style syntax Yes Yes Yes Yes Yes ~Yes
Enumerated types Yes Yes Yes Yes Yes Yes
Support all C types Yes Yes No No No No
80 bit floating point Yes Yes Yes No No No
Complex and Imaginary Yes Yes No No No No
Direct access to C Yes Yes Yes No No No
Use existing debuggers Yes Yes Yes Yes ??? No Yes ???
Struct member alignment control Yes No No Yes No Yes
Generates standard object files Yes Yes Yes No No No
Macro text preprocessor No Yes Yes No No
Other D C C++ C# Java Nemerle
Conditional compilation Yes Yes Yes Yes No Yes
Unicode source text Yes Yes Yes Yes Yes Yes
Documentation comments Yes No No Yes Yes No (plan)
+ — означает, что во много раз круче чем в приведенных языках.
* — означает, что реализовано на макросах или реализуется на макросах.
— — возможность поддерживается слабо.
??? — бредовый вопрос.
— смешной вопрос, вызванный убогостью D в рассматриваемом вопросе.

Теперь стоит привести еще одну таблицу.
Feature D C C++ C# Java Nemerle
Functionam programming suport D C C++ C# Java Nemerle
pattern matching No No No No No Yes
lambda support Yes No No Yes No Yes+
Partial application No No No No No Yes
All statment is expression No No No No No Yes
Support Linken Lists in language No No No No No Yes+
Other D C C++ C# Java Nemerle
Extended local type inference No No No No No Yes+
Extention methods No No No No (plan) No Yes+
yield coninuatons No No No Yes No Yes
Constrans on type parametrs No No (plan) No Yes Yes Yes
Indexers (propery[...]) ??? No No Yes No Yes+
Default parameter value ??? Yes No No No Yes
Attrubutes (extending metedata) No No No Yes Yes Yes
Named parametrs No No No No No Yes
Type safe variant data type No No No No No Yes
Nulable type No No No Yes No Yes
Pattern imlementation No No No No No Yes
Console interpreter No No No No No Yes
Type safe variant data type No No No No No Yes
Tuple data type (anonymous type) No No No No (plad-) No Yes
Multiple dispatching No No No No No Yes
Spliced strings ( $" xxx $(x + 1) yyy" notation) No No No No No Yes
Lazy evaluation No No No No No Yes
Metaprograming D C C++ C# Java Nemerle
Metaprograming support Bad (static calcs) Bad (textual macro) Bad (textual macro, template side affect) No No Yes+ (AST based macros)
Tuting complete mete-language No No No No No Yes
Mete-language is same language No No No No No Yes
Compiled meta-code No No No No No Yes
Fast meta-code No No No No No Yes
Analyse AST No No No No No Yes
Report clear and intelligible error and diagnostic message No No No No No Yes
Modify syntax No No No No No Yes
Simplify code generation No No No No No Yes (quasi-quotation, splising)
Internal DSL support No No Bad No No Yes+
Interaction with copiler No No No No No Yes+
Useful macros in stdlib No No No No No Yes
Modify AST No No No No No Yes
IDE D C C++ C# Java Nemerle
IDE suport No Bad Bad Yes+ Yes+ No (plan)
Refactoring No Bad Bad Yes+ Yes+ No (plan)
Надеюсь ошибся не много. Если что поправим.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Таблица сранения языкво от создателей D поправленная мно
От: GlebZ Россия  
Дата: 18.05.06 16:08
Оценка:
Здравствуйте, VladD2, Вы писали:

А что ты имел ввиду IDE Support для C++ — BAD?(что refactoring C++ is bad, не спорю).
Re: Таблица сранения языкво от создателей D поправленная мно
От: stele Россия www.stele.su
Дата: 18.05.06 17:03
Оценка:
А статью напишешь с примерами и картинками как последняя колонка лучше остальных?
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 648>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Re: Таблица сранения языкво от создателей D поправленная мно
От: FR  
Дата: 18.05.06 17:19
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Надеюсь ошибся не много. Если что поправим.


lambda support в D есть, не хуже чем в C#2

auto tst = function int(int x) {return x + 3;};
Re: Таблица сранения языкво от создателей D поправленная мно
От: kedik  
Дата: 18.05.06 17:22
Оценка: :)
Здравствуйте, VladD2, Вы писали:


VD>Надеюсь ошибся не много. Если что поправим.


Ну дык а вывод-то какой... у меня чего-то посчитать не получаеться — калькулятор глючит...

У кого длинее то?
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 17:58
Оценка: 1 (1)
Здравствуйте, GlebZ, Вы писали:

GZ>А что ты имел ввиду IDE Support для C++ — BAD?(что refactoring C++ is bad, не спорю).


* Комлит Ворд для С++ хреновый у всех что я видел средств. Даже Таматный Асист врал безбожно.
* О фишках вроде реалтаймной подсветке ошибко даже и мечтать не приходится.
* Из-за маросов и сложности языка частенько нкоррктная подстветка.
* Нет подстветки типов в код.
Короче проще перечислить, что есть.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: GlebZ Россия  
Дата: 18.05.06 18:16
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>* Комлит Ворд для С++ хреновый у всех что я видел средств. Даже Таматный Асист врал безбожно.

Со всем кроме комплита соглашусь. В VS2003 — не замечал глюков(а может такой код писал ). В VC6 вретъ и падаетъ.
Re: Таблица сранения языкво от создателей D поправленная мно
От: iZEN СССР  
Дата: 18.05.06 18:17
Оценка:
Здравствуйте, VladD2, Вы писали:

<тырыпыры>
VD>Надеюсь ошибся не много. Если что поправим.

Конкретно по Яве.

Associative arrays == Hashtable/Map
typeof == instanceof.
foreach — почему ДА, когда НЕТ?
Contract Programming — ДА, так как есть Checked Exceptions.
Unit testing — фреймворк JUnit.
RAII (automatic destructors) == finalization и слабые ссылки.
Scope guards — есть.
80 bit floating point — есть гораздо круче — BigDecimal.
Direct access to C — есть JNI.
Use existing debuggers — это что ваще?
Macro text preprocessor — вообще-то существует как расширение.
Conditional compilation — вообще-то существует как расширение.

Ну а остальное, относящееся к метапрограммированию, вообще сравнивать не хочется, не для того Java создавалась.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: GlebZ Россия  
Дата: 18.05.06 18:23
Оценка: +1
Здравствуйте, iZEN, Вы писали:

В верхней таблице, что касается C#, вообще сильно наглючено.

ZEN>RAII (automatic destructors) == finalization и слабые ссылки.

Я бы не говорил что это RAII. В принципе в той же степени как и в С#(они там приплюсовали его). Это разные и несравнимые вещи работа с GC и без оного.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: iZEN СССР  
Дата: 18.05.06 18:30
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>В верхней таблице, что касается C#, вообще сильно наглючено.


iZEN>>RAII (automatic destructors) == finalization и слабые ссылки.

GZ>Я бы не говорил что это RAII. В принципе в той же степени как и в С#(они там приплюсовали его). Это разные и несравнимые вещи работа с GC и без оного.
Да я понимаю.
Ну нету в Java способа преобразовать выражение myObject = null; в развёрнутый деструктор кроме как надеяться на GC, слабую ссылку, finalization и господабоганашего.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: GlebZ Россия  
Дата: 18.05.06 18:35
Оценка: +1
Здравствуйте, iZEN, Вы писали:

ZEN>Да я понимаю.

ZEN>Ну нету в Java способа преобразовать выражение myObject = null; в развёрнутый деструктор кроме как надеяться на GC, слабую ссылку, finalization и господабоганашего.
А собственно и оно и не нужно в той же степени как в С++. Это совершенно другой стиль программирования, и смысла в таком сравнении нету.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 18:36
Оценка:
Здравствуйте, stele, Вы писали:

S>А статью напишешь с примерами и картинками как последняя колонка лучше остальных?


Писать о том, "как лучше" точнее "чем лучше" занятие не благодарно. Но статью, точнее статьи, мы уже написали. Сегодня привезли тираз RSDN Magazine #1 2006 в котором 3 статьи о Nemerle. Они не 100%-но описывают язык, но для всех кто знаком с C# дадут вполне приличное понимание языка.

Я же могу подчеркнуть три вещи которые мне особо понравились:
1. Макросы. Пожалуй только из-за них уже стоит использовать этот язык.
2. Сопоставление с образцом (pattern matching).
3. Вывод типов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 18:36
Оценка:
Здравствуйте, FR, Вы писали:

FR>lambda support в D есть, не хуже чем в C#2


FR>
FR>auto tst = function int(int x) {return x + 3;};
FR>


ОК, добавил.

Замыкания в них, кстати, поддерживаются?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 18:36
Оценка: :))) :)
Здравствуйте, kedik, Вы писали:

K>Ну дык а вывод-то какой... у меня чего-то посчитать не получаеться — калькулятор глючит...


Чей? Твой? Или мой? Мне казалось, что такая таблица нужна именно для того, чтобы люди сами делали выводы.

Мой вывод, думаю, все и так понятен. Если нет острой потребности в генерации нэйтив-кода, и если не расстраивает то, что приходится использовать фрэймворк, то возможности emerle однозначно намного выше. К тому же язык полностью типобезопасный и содержит минимум граблей.

Но, естественно, каждый решает сам. Вдруг кто-то просто не переносит птичек или розовых слоников?

K>У кого длинее то?


Длинее хобот у слона.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: GlebZ Россия  
Дата: 18.05.06 18:40
Оценка: :))) :))
Здравствуйте, VladD2, Вы писали:

VD>Длинее хобот у слона.

Этого ?

Re[3]: Таблица сранения языкво от создателей D поправленная
От: stele Россия www.stele.su
Дата: 18.05.06 18:48
Оценка: 6 (1) :))) :))) :))) :))
Здравствуйте, VladD2, Вы писали:

VD>Сегодня привезли тираз RSDN Magazine #1 2006 в котором 3 статьи о Nemerle. Они не 100%-но описывают язык, но для всех кто знаком с C# дадут вполне приличное понимание языка.


Ну вы не тяните, в продажу его. Капиталл должен работать, а не лежать на складе
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 648>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Re: Таблица сранения языкво от создателей D поправленная мно
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.05.06 18:54
Оценка:
Здравствуйте, VladD2

А можно пример RAII в Nemerle? Или ты в качестве RAII конструкцию using рассматриваешь?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 18:57
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Со всем кроме комплита соглашусь. В VS2003 — не замечал глюков(а может такой код писал ). В VC6 вретъ и падаетъ.


А ты ATL используешь? Я вот имел нехилые проблемы. А boost?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Таблица сранения языкво от создателей D поправленная
От: GlebZ Россия  
Дата: 18.05.06 19:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, GlebZ, Вы писали:


GZ>>Со всем кроме комплита соглашусь. В VS2003 — не замечал глюков(а может такой код писал ). В VC6 вретъ и падаетъ.


VD>А ты ATL используешь? Я вот имел нехилые проблемы. А boost?

ATL — да. Boost — нет.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 19:00
Оценка:
Здравствуйте, iZEN, Вы писали:

ZEN>Associative arrays == Hashtable/Map


Авторы ди рассматривали возможности языка, а не библиотек. По-моему, это очевидно. Надо выключить фанатизм и и принималь правила игры.

Я согласен с тем, что это не является реальным приемуществом, и что коллекции явы и дотнета практически не отличаются по функциональности и удобству. Но вот так вот решили сравнивать авторы.

ZEN>typeof == instanceof.


Сори, на корректность Явы я особого внимания не обращал. С данными замечаниями согласен. Сейчас внесу...

ZEN>Contract Programming — ДА, так как есть Checked Exceptions.


Тут речь идет о другом. Тут речь о пред/пост-условиях.

ZEN>foreach — почему ДА, когда НЕТ?

В Java 1.5 расширен синтаксис предложения for.

ZEN>Unit testing — фреймворк JUnit.


То же что и про хэш-таблицу. Речь о поддержке в языке. В языке Ява поддержка юнит тестов отсуствует.

ZEN>RAII (automatic destructors) == finalization и слабые ссылки.


Ты прочел бы описание RAII прежде чем говорить. В C# и Nemerle речь идет о using (...).

ZEN>Scope guards — есть.


Пример, плиз, приведи.

ZEN>80 bit floating point — есть гораздо круче — BigDecimal.


Еще раз, это не особенность языка.

ZEN>Direct access to C — есть JNI.


Этого вообще в сравнении нет. Там идет речь о возможности использования заголовочных файлов С.

ZEN>Use existing debuggers — это что ваще?


Хрен его знает. Видимо речь о Вынь-дебагерах. Согласен, что товарищь явно притягивает какею-то фигню за уши. Но из песни слов не выкинишь. Могу добавить ???.

ZEN>Macro text preprocessor — вообще-то существует как расширение.


Как расширение можно и С++-ный использовать. Я уже устал повторять, что речь идет о ЯЗЫКЕ.

ZEN>Conditional compilation — вообще-то существует как расширение.


Ну, ты уже все должен и сам понять.

ZEN>Ну а остальное, относящееся к метапрограммированию, вообще сравнивать не хочется, не для того Java создавалась.


Да. Ява создавалась для Гашиш Кумаров.

Итого, в сухом осадке.

С typeof == instanceof вышла ошибочка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 19:22
Оценка:
Здравствуйте, GlebZ, Вы писали:

VD>>А ты ATL используешь? Я вот имел нехилые проблемы. А boost?

GZ>ATL — да. Boost — нет.

И с АТЛ не было проблем? У меня были.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 19:22
Оценка:
Здравствуйте, GlebZ, Вы писали:

VD>>Длинее хобот у слона.

GZ>Этого ?

GZ>


Конечно нет. У этого:

... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 19:22
Оценка: :))
Здравствуйте, eao197, Вы писали:

E>А можно пример RAII в Nemerle? Или ты в качестве RAII конструкцию using рассматриваешь?


using (x = SomeResource())
{
    используем ресурс.
} // здесь, что бы не произошло, ресурс освободится.


Причем, можно и С++-аналог сделать, в общем-то. Только потребности нет. Люди решают в первую очередь те задачи которые вызвают проблемы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: iZEN СССР  
Дата: 18.05.06 19:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, iZEN, Вы писали:


iZEN>>Associative arrays == Hashtable/Map

VD>Авторы ди рассматривали возможности языка, а не библиотек. По-моему, это очевидно. Надо выключить фанатизм и и принималь правила игры.
VD>Я согласен с тем, что это не является реальным приемуществом, и что коллекции явы и дотнета практически не отличаются по функциональности и удобству. Но вот так вот решили сравнивать авторы.


iZEN>>Contract Programming — ДА, так как есть Checked Exceptions.

VD>Тут речь идет о другом. Тут речь о пред/пост-условиях.
iZEN>>foreach — почему ДА, когда НЕТ?
VD>В Java 1.5 расширен синтаксис предложения for.
iZEN>>Unit testing — фреймворк JUnit.
VD>То же что и про хэш-таблицу. Речь о поддержке в языке. В языке Ява поддержка юнит тестов отсуствует.
iZEN>>80 bit floating point — есть гораздо круче — BigDecimal.
VD>Еще раз, это не особенность языка.

Может заодно и concurrent-специфические элементы библиотеки отбросим (чего уж там мелочится, ведь рассматриваем язык отдельно от библиотеки)? Но тогда язык потеряет свойство параллелизма, останутся только мониторы.

Java, в отличие от "остальных языков", как любят с издёвкой говорить об интересных вещах всякие деятели из Microsoft, является платформой, и системные библиотеки от него не отделимы.

iZEN>>RAII (automatic destructors) == finalization и слабые ссылки.

VD>Ты прочел бы описание RAII прежде чем говорить. В C# и Nemerle речь идет о using (...).
Читаю: Resource Acquisition Is Initialization (сокращённо RAII) — важный принцип ОО-программирования, суть которого заключается в том, что получение ресурса совмещается с инициализацией, а освобождение с деинициализацией (уничтожением) переменной.

Получение доступа к ресурсу происходит в конструкторе, а освобождение в деструкторе. Поскольку деструктор автоматической переменной вызывается при выходе из её области видимости, то можно гарантировать освобождение ресурса, как только жизненный цикл переменной подойдет к концу. Это также справедливо в ситуациях, в которых возникают исключения. Это делает RAII ключевой концепцией для написания exception-safe кода.

В Java: статические и нестатические блоки инициализации, выполняющиеся до вызова конструктора, завершающая стадия существования объекта заканчивается на выполнении кода в методе finalize, когда ссылка становится слабой (и безжизненной), а освобождение занятых ресурсов не входит в компетенцию GC.
Чито не так?

iZEN>>Scope guards — есть.

VD>Пример, плиз, приведи.
{...}
секурити-домены.
Не то? Тохда извини.

iZEN>>Direct access to C — есть JNI.

VD>Этого вообще в сравнении нет. Там идет речь о возможности использования заголовочных файлов С.
Re: Таблица сранения языкво от создателей D поправленная мно
От: c-smile Канада http://terrainformatica.com
Дата: 18.05.06 19:56
Оценка:
Здравствуйте, VladD2, Вы писали:

Ты забыл добавить.

Feature D C C++ C# Java Nemerle
Require VM/RE No No No Yes Yes Yes
Natively compilable Yes Yes Yes No(but Native Java) No No
Memory management (heap) GC and new/delete new/delete new/delete Only GC Only GC Only GC
И потом например builtin Linked List support это сильный бенефит?
Console interpreter — это про что вообще? про возможность набрать программу с консоли и запустить?

И что такое Spliced strings ( $" xxx $(x + 1) yyy" notation)?

Constrans on type parametrs — это есть в D.
Indexers (propery[...]), Default parameter value — yes для D

Type safe variant data type — std.boxer.

Analyse AST ...
Поддержка микроформатов — это я понимаю но AST зачем тебе (и мне)?

Simplify code generation (Simplified code generation) — а это чего такое?
Re: Таблица сранения языкво от создателей D поправленная мно
От: Lloyd Россия  
Дата: 18.05.06 20:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD> Strong typedefs


Это разве не оно?
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 21:23
Оценка:
Здравствуйте, iZEN, Вы писали:

ZEN>Может заодно и concurrent-специфические элементы библиотеки отбросим (чего уж там мелочится, ведь рассматриваем язык отдельно от библиотеки)?


Так и делается. Если в Ди или Немерле есть языковые возможности для поддержки многопоточности, то о них и говорится. А если речь о библиотеке, то нет. Можно конечно сказать, что у Явы большая библиотека, но о дотнете можно сказать тоже самое.

ZEN> Но тогда язык потеряет свойство параллелизма, останутся только мониторы.


У него их и не было. Трудно терять то что не имел.

ZEN>Java, в отличие от "остальных языков", как любят с издёвкой говорить об интересных вещах всякие деятели из Microsoft, является платформой, и системные библиотеки от него не отделимы.


Это пустые слова. И дотнет и даже Вынь32 является платформой и библиотеки от них не отделимы. Но Ява как язык и C# как язык рассматриваются как языки. Только и всего.

ZEN>Читаю: [i]Resource Acquisition Is Initialization (сокращённо RAII) — важный принцип ОО-программирования, суть которого заключается в том, что получение ресурса совмещается с инициализацией, а освобождение с деинициализацией (уничтожением) переменной.


В ЖЦ-системах вроде явы и дотнета нет уничтожения объектов. А финализация является недетерминированной и не позволяет управлять многими типами ресурсов.
По этому сравнивать их с деструкторами С++ некорректно.

iZEN>>>Scope guards — есть.

VD>>Пример, плиз, приведи.
ZEN>{...}
ZEN>секурити-домены.
ZEN>Не то? Тохда извини.

Не понял. Я просил привести примеры языковых конструкций.


iZEN>>>Direct access to C — есть JNI.

VD>>Этого вообще в сравнении нет. Там идет речь о возможности использования заголовочных файлов С.
ZEN>
А ты открой исходную таблицу и покликай по ссылочкам.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: c-smile Канада http://terrainformatica.com
Дата: 18.05.06 23:11
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, VladD2, Вы писали:


VD>> Strong typedefs


L>Это разве не оно?


Это не то.

В D есть typedef а есть alias.

Это не компилируется:
  typedef uint counter;

  counter c;

  void increment(inout uint c)
  {
   ...
  }
  
  increment(c); // compile time error.


А это вот пройдет на ура:

  alias uint counter;

  counter c;

  void increment(inout uint c)
  {
   ...
  }
  
  increment(c);
Re: Таблица сранения языкво от создателей D поправленная мно
От: Андрей Хропов Россия  
Дата: 18.05.06 23:14
Оценка:
Здравствуйте, VladD2, Вы писали:

VD> Feature

VD> D
VD> C
VD> C++
VD> C#
VD> Java
VD> Nemerle
VD>[/tr]

VD>

VD> Garbage Collection
VD> Yes-
VD> No
VD> No
VD> Yes
VD> Yes
VD> Yes
VD>
VD>- — возможность поддерживается слабо.
Я бы "-" убрал. В D полноценный GC.
Можно и вручную управлять памятью, но это в специальных случаях.

VD>

VD> Nested classes
VD> Yes
VD> No
VD> Yes
VD> Yes
VD> Yes
VD> Yes
VD>

Я боюсь в C нет классов , так что No


VD>Теперь стоит привести еще одну таблицу.

VD>[t]
VD>
VD> Indexers (propery[...])
VD> ???
VD> No
VD> No
VD> Yes
VD> No
VD> Yes+
VD>

В C++ можно перегрузить оператор [] для одного параметра,
в D можно перегружать оператор [] для произвольного количества (opIndex).

VD>

VD> Default parameter value
VD> Yes
VD> No
VD> Yes
VD> No
VD> No
VD> Yes
VD>

Ошибочка: в C их нет, а в C++ они как раз есть, и в D они есть (как просто для функций, так и для параметров шаблонов).

VD> Named parametrs


Имеется ввиду при передаче в функцию указание названий параметров?

VD>

VD> Metaprograming support
VD> Bad (static calcs)
VD> Bad (textual macro)
VD> Bad (textual macro, template side effect)
VD> No
VD> No
VD> Yes+ (AST based macros)
VD>

Metaprograming support — разница между шаблонами и макросами существенная
(первые — типизированы, вторые — просто текстовая замена),
и я бы не стал сваливать их в одну кучу "bad".
И надо бы указать, что в D static calcs + templates,
и их кстати можно параметризовывать любыми именами символов, вещественными числами и строками.

VD>

VD> Tuting complete mete-language
VD> Yes
VD> No
VD> Yes
VD> No
VD> No
VD> Yes
VD>

Шаблоны C++ и D являются Turing-complete (сам не доказывал , но про крайней мере во многих местах я это видел, в том числе и в
Wikipedia).


VD> Meta-language is same language


странный вопрос.
Что значит тот же?
В Nemerle в макросах используются спецсимволы "<[" и "]>". Так же как "!()" в D и "<" и ">" для шаблонов в C++.
Что имелось ввиду?

Я бы сказал, что единственнный метаязык, из тех которых я знаю, который я бы назвал "мета" над самим собой, — это Лисп.

VD> Compiled meta-code


Для С/C++/D я бы поставил да, т.к. макросы и шаблоны являются compile-time.

VD> Fast meta-code


Для С/C++/D я бы поставил да, т.к. макросы и шаблоны являются compile-time.

VD> Report clear and intelligible error and diagnostic message


Это вообще-то зависит от реализации, хотя соглашусь, что с шаблонами a-la C++/D это сделать труднее, чем в Nemerle.

VD> Internal DSL support


Уж D то в этом смысле явно не хуже С++, так как в нем вся та же перегрузка операторов.
Так что по крайней мере не меньше чем bad .

VD> Refactoring

VD> No
VD> No
VD> Bad
VD> Yes+
VD> Yes+
VD> No (plan)
VD>[/tr]

А разве для не ОО-языков можно говорить о рефакторинге? Не знаю, мне кажется напротив C надо поставить No.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Таблица сранения языкво от создателей D поправленная
От: Андрей Хропов Россия  
Дата: 18.05.06 23:14
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, VladD2, Вы писали:


VD>> Strong typedefs


L>Это разве не оно?

Там написано

Much like typedef in C.

Если это действительно и имелось в виду, то
это то что в таблице под именем alias (он же weak typedef).
Просто новое имя для старого типа.

Тогда как strong typedef вводит новый тип семантически эквививлентный старому. Но в этом случае для компилятора это уже два разных типа и, например, привести их друг к другу неявно нельзя:
здесь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 23:21
Оценка: :)))
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, VladD2, Вы писали:


CS>Ты забыл добавить.


Не забыл. Это сделали еще Ди-шники. Читай внимательно.

CS>И потом например builtin Linked List support это сильный бенефит?


Ага. В отличии от встроенной поддержки динамических массивов.

CS>Console interpreter — это про что вообще?


Про консольный интерпретаторв, как не странно.
http://nemerle.org/Nemerlish

CS> про возможность набрать программу с консоли и запустить?


Что-то вроде.

CS>И что такое Spliced strings ( $" xxx $(x + 1) yyy" notation)?


По идее должно. Я не любитель траха с командой строкой. Но многие считают такой подход удобным (особанно при обучении).

CS>Constrans on type parametrs — это есть в D.


Незнал. А как это выглядит?

CS>Indexers (propery[...]), Default parameter value — yes для D


ОК.

CS>Type safe variant data type — std.boxer.


В лес. В лес все библиотеки. Речь идет о встроенных типах. Темболее, что судя по названию ты просто не въехал, что такое варинт.
http://nemerle.org/Nemerle_for_OOP_Programmers_Week_3#Variants

CS>Analyse AST ...

CS>Поддержка микроформатов — это я понимаю но AST зачем тебе (и мне)?

Тебе как смотрящему на мир через призму С++ и Ди не нужны, а мне нужны. Поднимись на шаг вверх и поймешь зачем.

CS>Simplify code generation (Simplified code generation) — а это чего такое?


Изучаем макросы Nemerle
Автор: VladD2
Дата: 18.02.06
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 23:21
Оценка:
Здравствуйте, Lloyd, Вы писали:

VD>> Strong typedefs


L>Это разве не оно?


Нет. Это алиас.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: Андрей Хропов Россия  
Дата: 18.05.06 23:23
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Здравствуйте, VladD2, Вы писали:


VD>>

VD>> Metaprograming support
VD>> Bad (static calcs)
VD>> Bad (textual macro)
VD>> Bad (textual macro, template side effect)
VD>> No
VD>> No
VD>> Yes+ (AST based macros)
VD>>

АХ>Metaprograming support — разница между шаблонами и макросами существенная

АХ>(первые — типизированы, вторые — просто текстовая замена),
АХ> и я бы не стал сваливать их в одну кучу "bad".
АХ>И надо бы указать, что в D static calcs + templates,
АХ>и их кстати можно параметризовывать любыми именами символов, вещественными числами и строками.

Уточнение: здесь конечно же имеются ввиду текстовые макросы C, а не макросы Nemerle.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.06 23:49
Оценка: -1
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Я бы "-" убрал. В D полноценный GC.

АХ>Можно и вручную управлять памятью, но это в специальных случаях.

Не полноценный. В Ди консервативный ЖЦ, а значит уплотнение кучи невозможно.

АХ>Я боюсь в C нет классов , так что No


+1 Перепутаны С и С++.

АХ>В C++ можно перегрузить оператор [] для одного параметра,


Ага. Но индексатор не получить. Не так семантика.

АХ>в D можно перегружать оператор [] для произвольного количества (opIndex).


Вот это возможно то что нужно.

VD>>

VD>> Default parameter value
VD>> Yes
VD>> No
VD>> Yes
VD>> No
VD>> No
VD>> Yes
VD>>

АХ>Ошибочка: в C их нет, а в C++ они как раз есть, и в D они есть (как просто для функций, так и для параметров шаблонов).


+1 Опять же перепутаны колонки.

VD>> Named parametrs


АХ>Имеется ввиду при передаче в функцию указание названий параметров?


Да.

VD>>

VD>> Metaprograming support
VD>> Bad (static calcs)
VD>> Bad (textual macro)
VD>> Bad (textual macro, template side effect)
VD>> No
VD>> No
VD>> Yes+ (AST based macros)
VD>>

АХ>Metaprograming support — разница между шаблонами и макросами существенная

АХ>(первые — типизированы, вторые — просто текстовая замена),
АХ> и я бы не стал сваливать их в одну кучу "bad".

А я стану. Назвать удовлетворительным нельзя ни то, ни другое.

АХ>И надо бы указать, что в D static calcs + templates,


Возможно. Я не силен в Ди и не знаю, что могут его шаблоны в области метапрограммирования. Так что жду примеров.

АХ>и их кстати можно параметризовывать любыми именами символов, вещественными числами и строками.


В немерле этого нет, но возможности метапрограммирования куда шире.

VD>>

VD>> Tuting complete mete-language
VD>> Yes
VD>> No
VD>> Yes
VD>> No
VD>> No
VD>> Yes
VD>>

АХ>Шаблоны C++ и D являются Turing-complete (сам не доказывал , но про крайней мере во многих местах я это видел, в том числе и в

АХ>Wikipedia).

Серьезно? Ну, тода жду примера чтения файла с диска во время компиляции средствами шаблонов С++ или Ди. До тех пор останусь при своем мнении.


VD>> Meta-language is same language


АХ>странный вопрос.

АХ>Что значит тот же?

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

АХ>В Nemerle в макросах используются спецсимволы "<[" и "]>". Так же как "!()" в D и "<" и ">" для шаблонов в C++.


<[ ... ]> это не скобки шаблонов, а квази-цитирование
Автор: VladD2
Дата: 18.02.06
.

АХ>Что имелось ввиду?


Кем?

АХ>Я бы сказал, что единственнный метаязык, из тех которых я знаю, который я бы назвал "мета" над самим собой, — это Лисп.


Ну, вот знакомься со вторым — Nemerle. Кое в чем он превосходит лисп. Но многое от него унаследовал.

VD>> Compiled meta-code


АХ>Для С/C++/D я бы поставил да, т.к. макросы и шаблоны являются compile-time.


А поставлю нет, так как понимаю о чем говорю. По крайней мере С++ интерпретирует шаблоны во время компиляции. И не имеет ни какого значения то, что они выполняются во время компиляции. Главное, что они сами интерпретируются.

VD>> Fast meta-code


АХ>Для С/C++/D я бы поставил да, т.к. макросы и шаблоны являются compile-time.


А я бы — нет. По тем же причинам что и раньше. Речь идет о скорости выполнения самих макросов.

VD>> Report clear and intelligible error and diagnostic message


АХ>Это вообще-то зависит от реализации, хотя соглашусь, что с шаблонами a-la C++/D это сделать труднее, чем в Nemerle.


Это не зависит от реализации. Незнаю как в Ди, но в С++ вообще нет средств выдачи сообщений из меташаблонов. Они вообще являются недоразумением. Это как раз к вопросу о том, что является полноценным. Как в случае Лиспа в Немерел метакод — это полноценный код на Немерле. В нем можно проверить условие и вызвамть метод сообщеющий об ошибке.

VD>> Internal DSL support


АХ>Уж D то в этом смысле явно не хуже С++, так как в нем вся та же перегрузка операторов.


Возможно Ди и не хуже С++. Но С++ ниже плинтуса. Так что уровень С++ здесь не показатель.

АХ>Так что по крайней мере не меньше чем bad .


Ну, это возможно.

VD>> Refactoring

VD>> No
VD>> No
VD>> Bad
VD>> Yes+
VD>> Yes+
VD>> No (plan)
VD>>[/tr]

АХ>А разве для не ОО-языков можно говорить о рефакторинге? Не знаю, мне кажется напротив C надо поставить No.


А чем они отличаются? То же АСТ, те же методы парсинга. Те же имена идентификаторов.

ЗЫ

То с чем согласен, поправлю завтра. Но желательно видеть примеры. (это я о Ди).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Таблица сранения языкво от создателей D поправленная
От: GlebZ Россия  
Дата: 19.05.06 04:48
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>А ты ATL используешь? Я вот имел нехилые проблемы. А boost?

GZ>>ATL — да. Boost — нет.

VD>И с АТЛ не было проблем? У меня были.

Нет, не было. VC6 срубало начисто. VS2003 — держался нормально.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[5]: Таблица сранения языкво от создателей D поправленная
От: alex_ez Россия alex.jife.ru
Дата: 19.05.06 05:12
Оценка: -2
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, GlebZ, Вы писали:


GZ>>Со всем кроме комплита соглашусь. В VS2003 — не замечал глюков(а может такой код писал ). В VC6 вретъ и падаетъ.


VD>А ты ATL используешь? Я вот имел нехилые проблемы. А boost?


Мужики
IDE это жопа.
VI|VIM + "ANSI C++" + Boots + TLS + ...
silence in quite
Re: Таблица сранения языкво от создателей D поправленная мно
От: ArhAngelVezel Россия  
Дата: 19.05.06 05:24
Оценка:
VD>Здравствуйте, VladD2, Вы писали:
VD>
Feature D C C++ C# Java Nemerle
Unit testing Yes No No No No No*
Macro text preprocessor No Yes Yes No No
VD>Надеюсь ошибся не много. Если что поправим.

1. А что такое unit тесты ?? Если то как это описывают специалисты XP, то класс Debug в C# вполне можно рассматривать как инструмент для создания unit-тестов. По крайней мере Debug.Assert(), Debug.Fail(), Debug.Write() и Debug.WriteIf() есть, а создать консольный проект ...

2. Частично макротекст препроцессор в C# есть. see C# Preprocessor Directives (#if, #else, #elif, #endif, #define, #undef) конечно до Nemerle....
Re[6]: Таблица сранения языкво от создателей D поправленная
От: Дарней Россия  
Дата: 19.05.06 06:23
Оценка:
Здравствуйте, alex_ez, Вы писали:

_>Мужики

_>IDE это жопа.
_>VI|VIM + "ANSI C++" + Boots + TLS + ...

та же самая IDE, только вид сбоку
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Таблица сранения языкво от создателей D поправленная
От: alex_ez Россия alex.jife.ru
Дата: 19.05.06 06:25
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, alex_ez, Вы писали:


_>>Мужики

_>>IDE это жопа.
_>>VI|VIM + "ANSI C++" + Boots + TLS + ...

Д>та же самая IDE, только вид сбоку


Ну сбоку то дырок меньше...
И скорость на порядок вышее...
silence in quite
Re[2]: Таблица сранения языкво от создателей D поправленная
От: gear nuke  
Дата: 19.05.06 07:02
Оценка:
Здравствуйте, iZEN, Вы писали:

ZEN>80 bit floating point — есть гораздо круче — BigDecimal.


Смысл этого — поддержка операций с IEEE-754 extended аппаратным уровнем. В типичных задачах такая точность не часто нужна, разве в научных расчетах где-нибудь. Bignum итп либы — конечно круто, но в десятки-сотни раз медленнее. Справедливости ради надо сказать, что компилятор C/C++ от MS не поддерживает 80 bit.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[2]: Таблица сранения языкво от создателей D поправленная
От: Cyberax Марс  
Дата: 19.05.06 07:09
Оценка:
Андрей Хропов wrote:
> VD>- — возможность поддерживается слабо.
> Я бы "-" убрал. В D полноценный GC.
> Можно и вручную управлять памятью, но это в специальных случаях.
Минус стоит правильно — в D сейчас возможно использовать только
консервативный GC, сама семантика языка (юнионы, например) не позволяет
использовать точный GC.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[8]: Таблица сранения языкво от создателей D поправленная
От: Дарней Россия  
Дата: 19.05.06 07:12
Оценка: +1
Здравствуйте, alex_ez, Вы писали:

_>Ну сбоку то дырок меньше...

_>И скорость на порядок вышее...

И навигации по коду нет. и рефакторинга нет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 19.05.06 07:23
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>lambda support в D есть, не хуже чем в C#2


FR>>
FR>>auto tst = function int(int x) {return x + 3;};
FR>>


VD>ОК, добавил.


VD>Замыкания в них, кстати, поддерживаются?


Да, только вместо function надо использовать delegate, function связывает статически.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 19.05.06 07:23
Оценка:
Здравствуйте, VladD2, Вы писали:



VD>Это не зависит от реализации. Незнаю как в Ди, но в С++ вообще нет средств выдачи сообщений из меташаблонов. Они вообще являются недоразумением. Это как раз к вопросу о том, что является полноценным. Как в случае Лиспа в Немерел метакод — это полноценный код на Немерле. В нем можно проверить условие и вызвамть метод сообщеющий об ошибке.


В D сейчас шаблоный код стал гораздо чище и лучше чем в C++, например:

template factorial(int n)
{
  static if (n == 1)
    const factorial = 1;
  else
    const factorial = n * factorial!(n-1);
}


По моему вполне себе код на языке, да и сообщения об ошибке вывести используя static if не сложно.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 19.05.06 07:23
Оценка:
Здравствуйте, ArhAngelVezel, Вы писали:


AAV>1. А что такое unit тесты ?? Если то как это описывают специалисты XP, то класс Debug в C# вполне можно рассматривать как инструмент для создания unit-тестов. По крайней мере Debug.Assert(), Debug.Fail(), Debug.Write() и Debug.WriteIf() есть, а создать консольный проект ...


В D unit тесты просто встроены в язык.


AAV>2. Частично макротекст препроцессор в C# есть. see C# Preprocessor Directives (#if, #else, #elif, #endif, #define, #undef) конечно до Nemerle....


да можно bad поставить
Re[3]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 19.05.06 07:52
Оценка: +1
Здравствуйте, VladD2, Вы писали:


VD>То с чем согласен, поправлю завтра. Но желательно видеть примеры. (это я о Ди).


У тебя строка Type safe variant data type два раза повторяется.
И опечаток очень много.

Насчет тюринг полного языка, все таки шаблоны и в D и в C++ тюринг полные. Другое дело что они не могут полноценно использовать все возможности языка и платформы, в общем надо бы разделить эту строку на две 1) тюринг полность и 2) и использование всех возможностей языка и библиотек. (хотя второе у тебя уже есть)

Report clear and intelligible error and diagnostic message
Это тоже не понятно почему в D NO стоит? сообщения об ошибках в шаблонах у него гораздо более внятные чем у C++.
Re[6]: Таблица сранения языкво от создателей D поправленная
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.05.06 08:22
Оценка: :)
Здравствуйте, alex_ez, Вы писали:

_>VI|VIM + "ANSI C++" + Boots + TLS + ...


А что такое TLS?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Таблица сранения языкво от создателей D поправленная мно
От: Vermicious Knid  
Дата: 19.05.06 10:24
Оценка:
Здравствуйте, VladD2, Вы писали:

Implicit Function Template Instantiation No No Yes No No No
Вообще-то в D уже появилось, но пока в довольно ограниченном виде. И раз уж дженерики посчитали за шаблоны, то ifti в C#2 и Nemerle тоже есть. Но конечно ifti в C++ это беспрецедентная по своей мощности вещь, особенно если вспомнить о шаблонных конструкторах и операторах. Так что для D, C# и Nemerle следует записать Yes-.

Правда простые макросы Nemerle можно использовать как более мощный аналог обычных шаблонных функций(т.е. не методов) с ifti, но все таки шаблоны и макросы это очень разные вещи. И выполняют они совершенно разные задачи на мой взгляд.

try-catch-finally blocks Yes No No Yes Yes Yes
Тут тоже можно было бы Yes+ написать, так как в отлове исключений поддерживается pattern-matching.

Documentation comments Yes No No Yes Yes No (plan)
Почему у Nemerle No? Вроде бы есть.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: Андрей Хропов Россия  
Дата: 19.05.06 11:57
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Андрей Хропов wrote:

>> VD>- — возможность поддерживается слабо.
>> Я бы "-" убрал. В D полноценный GC.
>> Можно и вручную управлять памятью, но это в специальных случаях.
C>Минус стоит правильно — в D сейчас возможно использовать только
C>консервативный GC, сама семантика языка (юнионы, например) не позволяет
C>использовать точный GC.
Да, теперь понятно за что "-". Спасибо за разъяснение.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Таблица сранения языкво от создателей D поправленная мно
От: co  
Дата: 19.05.06 13:04
Оценка:
а есть ли в D мультиметоды ?
Re[3]: Таблица сранения языкво от создателей D поправленная
От: _DAle_ Беларусь  
Дата: 19.05.06 13:33
Оценка: 7 (3) +2
АХ>>Шаблоны C++ и D являются Turing-complete (сам не доказывал , но про крайней мере во многих местах я это видел, в том числе и в
АХ>>Wikipedia).

VD>Серьезно? Ну, тода жду примера чтения файла с диска во время компиляции средствами шаблонов С++ или Ди. До тех пор останусь при своем мнении.


А при чем тут файлы, диски?
http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf
Re[7]: Таблица сранения языкво от создателей D поправленная
От: Oyster Украина https://github.com/devoyster
Дата: 19.05.06 14:09
Оценка: :))) :)
Здравствуйте, eao197, Вы писали:

_>>VI|VIM + "ANSI C++" + Boots + TLS + ...


E>А что такое TLS?


Ты лучше мне скажи, что такое "Boots"
Re[8]: Таблица сранения языкво от создателей D поправленная
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.05.06 14:16
Оценка:
Здравствуйте, Oyster, Вы писали:

_>>>VI|VIM + "ANSI C++" + Boots + TLS + ...


E>>А что такое TLS?


O>Ты лучше мне скажи, что такое "Boots"


Это не правильно написанный Boost Не я один очепятки допускаю


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Таблица сранения языкво от создателей D поправленная
От: Oyster Украина https://github.com/devoyster
Дата: 19.05.06 14:23
Оценка:
Здравствуйте, eao197, Вы писали:

E>Это не правильно написанный Boost Не я один очепятки допускаю


Это я к тому, что TLS тоже, возможно, не TLS, а очень даже STL
Re[10]: Таблица сранения языкво от создателей D поправленная
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.05.06 14:26
Оценка:
Здравствуйте, Oyster, Вы писали:

E>>Это не правильно написанный Boost Не я один очепятки допускаю


O>Это я к тому, что TLS тоже, возможно, не TLS, а очень даже STL



Вообще то STL -- это неотъемлимая часть Ansi C++


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Таблица сранения языкво от создателей D поправленная
От: Oyster Украина https://github.com/devoyster
Дата: 19.05.06 14:30
Оценка:
Здравствуйте, eao197, Вы писали:

O>>Это я к тому, что TLS тоже, возможно, не TLS, а очень даже STL


E>

E>Вообще то STL -- это неотъемлимая часть Ansi C++

Не факт, что это помешало бы автору написать ANSI C++ + STL... в общем, ждём разъяснений.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: Андрей Хропов Россия  
Дата: 19.05.06 15:04
Оценка:
Здравствуйте, _DAle_, Вы писали:

АХ>>>Шаблоны C++ и D являются Turing-complete (сам не доказывал


VD>>Серьезно? Ну, тода жду примера чтения файла с диска во время компиляции средствами шаблонов С++ или Ди. До тех пор останусь при своем мнении.


_DA>А при чем тут файлы, диски?

_DA>http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf
Ну вот, умные люди доказали .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Таблица сранения языкво от создателей D поправленная
От: WolfHound  
Дата: 19.05.06 15:34
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

_DA>>А при чем тут файлы, диски?

_DA>>http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf
АХ>Ну вот, умные люди доказали .
Вот только на практике шаблоны не Turing-complete... Компилятор хвостовую рекурсию не оптимизирует.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Таблица сранения языкво от создателей D поправленная
От: Андрей Хропов Россия  
Дата: 19.05.06 15:52
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Андрей Хропов, Вы писали:


АХ>>Я бы "-" убрал. В D полноценный GC.

АХ>>Можно и вручную управлять памятью, но это в специальных случаях.

VD>Не полноценный. В Ди консервативный ЖЦ, а значит уплотнение кучи невозможно.

Объяснили, понял.

АХ>>В C++ можно перегрузить оператор [] для одного параметра,

VD>Ага. Но индексатор не получить. Не так семантика.
Ставим bad?

АХ>>в D можно перегружать оператор [] для произвольного количества (opIndex).

VD>Вот это возможно то что нужно.
Ставим Yes?

VD>>> Named parametrs

АХ>>Имеется ввиду при передаче в функцию указание названий параметров?
VD>Да.
Здорово, мне это еще в Питоне понравилось.

VD>>>

VD>>> Metaprograming support
VD>>> Bad (static calcs)
VD>>> Bad (textual macro)
VD>>> Bad (textual macro, template side effect)
VD>>> No
VD>>> No
VD>>> Yes+ (AST based macros)
VD>>>

АХ>>Metaprograming support — разница между шаблонами и макросами существенная

АХ>>(первые — типизированы, вторые — просто текстовая замена),
АХ>> и я бы не стал сваливать их в одну кучу "bad".
VD>А я стану. Назвать удовлетворительным нельзя ни то, ни другое.
Шаблоны (особенно в D) я бы удовлетворительными по крайней мере точно назвал.
Синтаксис как в Nemerle менять нельзя и пользоваться всеми средствами языка
(вызывать любые функции) нельзя, но тем не менее для многих применений достаточно.
По мне здесь лучше не bad, а limited.
Впрочем, я чувствую, здесь каждый останется при своем мнении.

АХ>>И надо бы указать, что в D static calcs + templates,


VD>Возможно. Я не силен в Ди и не знаю, что могут его шаблоны в области метапрограммирования. Так что жду примеров.


Вот могу привести примеры отсюда
(там еще есть длинный (поэтому не стал сюда копировать) пример с regular expressions в котором в частности выдаются сообщения об ошибках):

Вычисление квадратного корня:
import std.stdio;

template sqrt(real x, real root = x/2, int ntries = 0)
{
  static if (ntries == 5)
    // precision doubles with each iteration,
    // 5 should be enough
    const sqrt = root;
  else static if (root * root - x == 0)
    const sqrt = root;  // exact match
  else
    // iterate again
    const sqrt = sqrt!(x, (root+x/root)/2, ntries+1);
}

void main()
{
    real x = sqrt!(2);
    writefln("%.20g", x); // 1.4142135623730950487
}


Преобразование числа в строку (~ в D означает конкатенацию строк):
template decimalDigit(int n)    // [3]
{
  const char[] decimalDigit = "0123456789"[n..n+1];
} 

template itoa(long n)
{   
  static if (n < 0)
     const char[] itoa = "-" ~ itoa!(-n);  
  else static if (n < 10)
     const char[] itoa = decimalDigit!(n); 
  else
     const char[] itoa = itoa!(n/10L) ~ decimalDigit!(n%10L); 
}

char[] foo()
{
  return itoa!(264);   // returns "264"
}



АХ>>и их кстати можно параметризовывать любыми именами символов, вещественными числами и строками.

VD>В немерле этого нет, но возможности метапрограммирования куда шире.
Согласен, шире.

АХ>>Шаблоны C++ и D являются Turing-complete (сам не доказывал , но про крайней мере во многих местах я это видел, в том числе и в

АХ>>Wikipedia).

VD>Серьезно? Ну, тода жду примера чтения файла с диска во время компиляции средствами шаблонов С++ или Ди. До тех пор останусь при своем мнении.


Уже ответили другие (со ссылкой на статью).


VD>>> Meta-language is same language


VD>Это не вопрос, а факт. Метаязыком Немерле является сам же Немерле. А вот в С++ это функциональный-недоязык случайно родившийся от того, что рекурсивные шаблоны С++ создают побочные эффекты.


VD>>> Compiled meta-code


VD>>> Fast meta-code


VD>А поставлю нет, так как понимаю о чем говорю. По крайней мере С++ интерпретирует шаблоны во время компиляции. И не имеет ни какого значения то, что они выполняются во время компиляции. Главное, что они сами интерпретируются.


Ок, я не так интерпретировал эти пункты.
Знающие люди вспомнят провал ключевого слова "export" в C++.


VD>>> Report clear and intelligible error and diagnostic message


АХ>>Это вообще-то зависит от реализации, хотя соглашусь, что с шаблонами a-la C++/D это сделать труднее, чем в Nemerle.


VD>Это не зависит от реализации. Незнаю как в Ди, но в С++ вообще нет средств выдачи сообщений из меташаблонов. Они вообще являются недоразумением. Это как раз к вопросу о том, что является полноценным. Как в случае Лиспа в Немерел метакод — это полноценный код на Немерле. В нем можно проверить условие и вызвамть метод сообщеющий об ошибке.


В D тоже можно проверить условие и выдать информацию об ошибке, благодаря static if
(взят кусок отсюда):

91     // Returns the value of the exponent.
92     // must be of the form "" or  "e-543" or "E+2_453" etc
93     template parseExponent(char [] s, int result = 0, EFloatParseState state = EFloatParseState.WAITEXP)
94     {
95         static if (s.length == 0) {
96             // an empty string is acceptable
97             static if (state == EFloatParseState.WAITEXP || state == EFloatParseState.EXPDIG)
98                 const int parseExponent = result;
99             else {
100                 pragma(msg, "Error: No exponent found in floating-point literal.");
101                 static assert(0);
102             }
103         } else static if (state == EFloatParseState.WAITEXP && (s[0]=='e' || s[0]=='E') )
104             const int parseExponent = parseExponent!(s[1..$], 0, EFloatParseState.GOTEXPCHAR);
105         else static if (state == EFloatParseState.GOTEXPCHAR && s[0]=='-')
106             const int parseExponent = -parseExponent!(s[1..$], 0, EFloatParseState.GOTEXPSIGN);
107         else static if (state == EFloatParseState.GOTEXPCHAR && s[0]=='+')
108             const int parseExponent = parseExponent!(s[1..$], 0, EFloatParseState.GOTEXPSIGN);
109         else static if (state == EFloatParseState.EXPDIG && s[0]=='_')
110             // embedded underscores are allowed after the first digit
111             const int parseExponent = parseExponent!(s[1..$], result, state);
112         else static if (isdigit!( (s[0]) ) )
113            const int parseExponent = parseExponent!(s[1..$], result*10 + (s[0]-'0'), EFloatParseState.EXPDIG);   
114         else {
115             pragma(msg, "Error: Invalid characters found in floating-point literal.");
116             static assert(0);
117         }
118     }


VD>>> Internal DSL support


АХ>>Уж D то в этом смысле явно не хуже С++, так как в нем вся та же перегрузка операторов.


VD>Возможно Ди и не хуже С++. Но С++ ниже плинтуса. Так что уровень С++ здесь не показатель.


АХ>>Так что по крайней мере не меньше чем bad .


VD>Ну, это возможно.


Тогда надо поставить.


АХ>>А разве для не ОО-языков можно говорить о рефакторинге? Не знаю, мне кажется напротив C надо поставить No.


VD>А чем они отличаются? То же АСТ, те же методы парсинга. Те же имена идентификаторов.


В своей книге Фаулер говорит в основном об объектно-ориентированном коде, да и список на его сайте говорит о том, что большинство рефакторингов предполагают ОО-концепции.
Но хотя в усеченном виде (типа разделить длинную функцию на несколько) наверное можно и к C применять.

Уважаемый all, кто-нибудь применял рефакторинг в C?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Таблица сранения языкво от создателей D поправленная мно
От: GlebZ Россия  
Дата: 19.05.06 16:30
Оценка:
Здравствуйте, VladD2, Вы писали:


Arrays D C C++ C# Java Nemerle
Aliases Yes Yes Yes No No Yes
А в C# using — чем не алиас?

Performance D C C++ C# Java Nemerle
Direct native code gen Yes Yes Yes No No No
Этот раздел вообще не понял. Во многом, тут перфоманс не причем. А вот Direct native code gen в С#- есть.

Reliability D C C++ C# Java Nemerle
RAII (automatic destructors) Yes No Yes Yes No Yes
Здесь я уже возмущался. using — это все таки полуавтоматический деструктор. В C++ дестроится или нет решает объект, в C# — клиент(или GC).

try-catch-finally blocks Yes No No Yes Yes Yes
Вооще-то в C есть __type/__catch/__finally. И в С++ она унаследована(правда неэквивалентна и несовместима с родным try/catch).
Re: Таблица сранения языкво от создателей D поправленная мно
От: volk  
Дата: 19.05.06 16:35
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:
VD>...

Вот еще одну колонку добавить бы ( ) --- и в священные войны!
Тот, кто желает, но не делает, распространяет чуму.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: _DAle_ Беларусь  
Дата: 19.05.06 16:41
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Вооще-то в C есть __type/__catch/__finally. И в С++ она унаследована(правда неэквивалентна и несовместима с родным try/catch).


Ты что-то путаешь, __try/__catch/__finally нет ни в С, ни в С++. Это Microsoft extension.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: GlebZ Россия  
Дата: 19.05.06 17:11
Оценка:
Здравствуйте, _DAle_, Вы писали:
:

GZ>>Вооще-то в C есть __type/__catch/__finally. И в С++ она унаследована(правда неэквивалентна и несовместима с родным try/catch).


_DA>Ты что-то путаешь, __try/__catch/__finally нет ни в С, ни в С++. Это Microsoft extension.

Не знал.
Re[6]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 20:09
Оценка:
Здравствуйте, alex_ez, Вы писали:

_>Мужики

_>IDE это жопа.
_>VI|VIM + "ANSI C++" + Boots + TLS + ...

Да, да. Перечисленные вещи конечно решат все проблемы... но как ты представляешь их использование если ты даже их названия правильно написать не смог?
Или это такой тонкий английский юмор и подколка люнуксойдов?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 20:09
Оценка:
Здравствуйте, FR, Вы писали:

FR>Да, только вместо function надо использовать delegate, function связывает статически.


Почитал у них на сайте и пришел к выоду, что это не полноценные замыкания. Они не лексические. Используется термин "динамические". Что под этим понимается не ясно, но явно возможности сохранить контекст после выхода из метода уже нет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 20:09
Оценка:
Здравствуйте, FR, Вы писали:

FR>В D сейчас шаблоный код стал гораздо чище и лучше чем в C++, например:


FR>
FR>template factorial(int n)
FR>{
FR>  static if (n == 1)
FR>    const factorial = 1;
FR>  else
FR>    const factorial = n * factorial!(n-1);
FR>}
FR>


Да, это лучше чем на С++, но похоже полноценностью тут не пахнет. Весьма странно выглядит этот код. Вместо возврата значения из функции "const factorial". Для меня это выглядит как объявление локальной константы.

FR>По моему вполне себе код на языке, да и сообщения об ошибке вывести используя static if не сложно.


Можно пример?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 20:09
Оценка:
Здравствуйте, FR, Вы писали:

FR>У тебя строка Type safe variant data type два раза повторяется.


Дык не просто это дело форматировать. ООП то в редакторе не поддерживается. Приходится копипастом.

FR>И опечаток очень много.


Да, уж. Я точно не писатель про англицких заек.

FR>Насчет тюринг полного языка, все таки шаблоны и в D и в C++ тюринг полные. Другое дело что они не могут полноценно использовать все возможности языка и платформы, в общем надо бы разделить эту строку на две 1) тюринг полность и 2) и использование всех возможностей языка и библиотек. (хотя второе у тебя уже есть)


Возможно, но полноценным языком (по крайней мере в С++) назвать я не могу. Можно попробовать подобрать другие термины.

FR>Report clear and intelligible error and diagnostic message

FR>Это тоже не понятно почему в D NO стоит?

Возможно потому, что я его не знаю.
Приведи пример, рассмотрим.

FR> сообщения об ошибках в шаблонах у него гораздо более внятные чем у C++.


Если есть констрэйны, то охотно верю. Однако вопрос о том, можно ли дать конкретное пояснение в сложных случаях?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 20:09
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>А при чем тут файлы, диски?

_DA>http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf

Да, все при том же. Толку от возможностей если они не полноценны? Статьи на темы вроде "как сделать сериализацию на шаблонах", или "декларативание конечных автоматов на шаблонах" заканчиваются одним и тем же. Решение работат, но без слез на него смотреть нельзя. Сообщения об ошибках никакие. Возможностей не хватает. Отладки нет. Кучи макросов вроде ХХХ_4, ХХХ_5. Скорость компиляции отвратительная.

Возможно в Ди что-то изменилось в лучшую сторону, но до Немерловским макросов им обоим как до Пикина раком.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 20:09
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

АХ>>>В C++ можно перегрузить оператор [] для одного параметра,

VD>>Ага. Но индексатор не получить. Не так семантика.
АХ>Ставим bad?

Однозначно.

АХ>>>в D можно перегружать оператор [] для произвольного количества (opIndex).

VD>>Вот это возможно то что нужно.
АХ>Ставим Yes?

Надо смотреть на пример. Надеюсь, хорошо знающие Ди люди дадут его в ближайшее время.

АХ>>>Имеется ввиду при передаче в функцию указание названий параметров?

VD>>Да.
АХ>Здорово, мне это еще в Питоне понравилось.

Я уж не знаю откуда это было содрано, но если в языке есть значения по умолчанию для параметров, то иногда действительно удобно. Бывает, что метод имеет тучу параметров, а задать нужно только 1-2. А иногда это просто порождает более понятный код. Ведь имена параметров так же являются своего рода документацией.

VD>>А я стану. Назвать удовлетворительным нельзя ни то, ни другое.

АХ>Шаблоны (особенно в D) я бы удовлетворительными по крайней мере точно назвал.

Возможно, но тогда нужно вводить оценки. Что тоже не здорово, так как в том же Немерле метапрограммирование это первоклассная сущность и возможности его очень большие. Так что просто оценка 5 против 3 мало что скажет. Да и может появиться какой нибудь Мерле или "E" в котором оно будет еще лучше. Так что мне кажется деление на плохое и хорошее в данном случае уместно.

АХ>Синтаксис как в Nemerle менять нельзя и пользоваться всеми средствами языка

АХ>(вызывать любые функции) нельзя, но тем не менее для многих применений достаточно.

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

АХ>По мне здесь лучше не bad, а limited.


Возможно, но тогда нужно прорабатывать оценики и делать новую таблицу. А у меня есть большие сомнения в том, что она вообще отражает реальный расклад сил. Например, про то что в Немерле есть паттерн-матчинг, а в других языках его нет сказано ровно одна строка. Между тем это стольк большое приемущество, что ему можно посвятить целую статьию.

АХ>Впрочем, я чувствую, здесь каждый останется при своем мнении.


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

АХ>Вычисление квадратного корня:

АХ>import std.stdio;

АХ>template sqrt(real x, real root = x/2, int ntries = 0)
АХ>{
АХ>  static if (ntries == 5)
АХ>    // precision doubles with each iteration,
АХ>    // 5 should be enough
АХ>    const sqrt = root;
АХ>  else static if (root * root - x == 0)
АХ>    const sqrt = root;  // exact match
АХ>  else
АХ>    // iterate again
АХ>    const sqrt = sqrt!(x, (root+x/root)/2, ntries+1);
АХ>}

АХ>void main()
АХ>{
АХ>    real x = sqrt!(2);
АХ>    writefln("%.20g", x); // 1.4142135623730950487
АХ>}


Согласен — это вычисление во время компиляции, что само по себе хорошо. Но это еще не метапрограммирование так как никакого кода не изменяется и не порождается.

АХ>Преобразование числа в строку (~ в D означает конкатенацию строк):

[c]
АХ>template decimalDigit(int n) // [3]
АХ>{
АХ> const char[] decimalDigit = "0123456789"[n..n+1];
АХ>}

АХ>template itoa(long n)

АХ>{
АХ> static if (n < 0)
АХ> const char[] itoa = "-" ~ itoa!(-n);
АХ> else static if (n < 10)
АХ> const char[] itoa = decimalDigit!(n);
АХ> else
АХ> const char[] itoa = itoa!(n/10L) ~ decimalDigit!(n%10L);
АХ>}

АХ>char[] foo()

АХ>{
АХ> return itoa!(264); // returns "264"
АХ>}
[/q]

Как я понимаю — это тоже самое.

А возможно ли в Ди что-то вроде частичного выполнения из Немерле:
http://nemerle.org/Partial_evaluation ?

АХ>>>и их кстати можно параметризовывать любыми именами символов, вещественными числами и строками.

VD>>В немерле этого нет, но возможности метапрограммирования куда шире.
АХ>Согласен, шире.

Со своей стороны могу сказать, что раздел таблицы посвященный обобщенном программированию вообще хреновый. Его имеет смысл предеделать. Подобное сравнения для С++ и Шарпа я делел тут http://rsdn.ru/article/csharp/newincsharp.xml#ESJAG
Автор(ы): Владислав Чистяков (VladD2)
Дата: 24.06.2004
В статье рассказывается о новшествах, которые должны появиться в новой версии языка C#



АХ>>>Шаблоны C++ и D являются Turing-complete (сам не доказывал , но про крайней мере во многих местах я это видел, в том числе и в

АХ>>>Wikipedia).

VD>>Серьезно? Ну, тода жду примера чтения файла с диска во время компиляции средствами шаблонов С++ или Ди. До тех пор останусь при своем мнении.


АХ>Уже ответили другие (со ссылкой на статью).


ОК, согласен, но только в том, что я не верно подобрал термин. Речь шала о фактической полноценности. Например, как на шаблонах С++ или Ди можно реализовать нечто воде макросов Немерла для типобезопасного, статически типизированного доступа к БД?

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

АХ>Ок, я не так интерпретировал эти пункты.

АХ>Знающие люди вспомнят провал ключевого слова "export" в C++.

Говорят, что в одном компиляторе это реализовано, но я сам его не видел. К тому же уверен, что для метапрограммирования это ничего не даст, так как нужно выполнять метакод. И этот код может быть или скомпилирован в исполняемый (что вообще не предусматривается шаблонами), или интерпретироваться. В лучшем случае мы получим предварительный парсинг.

АХ>В D тоже можно проверить условие и выдать информацию об ошибке, благодаря static if


ОК, этот пункт изменим. Только опять же поддержка разная. Ведь многое зависит от того, что можно проверить. В немерле можно проверить очень много (почти все, если не все). Тут же мы (как я понимаю) ограничены статическими вычислениями которые не могут анализировать АСТ и темболее его типизацию.

АХ>>>Так что по крайней мере не меньше чем bad .


VD>>Ну, это возможно.


АХ>Тогда надо поставить.


ОК, предлагай крадацию оценок.

АХ>В своей книге Фаулер говорит в основном об объектно-ориентированном коде, да и список на его сайте говорит о том, что большинство рефакторингов предполагают ОО-концепции.


Фаулер мужик мною уважаемый, но не стоит делать догм из его выказываний. В конце концов и в С-коде можно иметь ОО-решения. И рефакторить можно не ОО-решения. Просто Фаулер живет в мире ООП, и говорит об ООП.

АХ>Но хотя в усеченном виде (типа разделить длинную функцию на несколько) наверное можно и к C применять.


Думаю, что переименование переменных и т.п. тоже для С не проблема. Просто С не так популярен на сегодня, чтобы на нем зацикливаться.

АХ>Уважаемый all, кто-нибудь применял рефакторинг в C?


Боюсь, что никто и в С++ не применяет. Но это не значит, что не будут применять если он будет доступен. Ну, и как я уже говорил, на С сегодня пишут не многие.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 20:09
Оценка:
Здравствуйте, ArhAngelVezel, Вы писали:

AAV>1. А что такое unit тесты ?? Если то как это описывают специалисты XP, то класс Debug в C# вполне можно рассматривать как инструмент для создания unit-тестов. По крайней мере Debug.Assert(), Debug.Fail(), Debug.Write() и Debug.WriteIf() есть, а создать консольный проект ...


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

AAV>2. Частично макротекст препроцессор в C# есть. see C# Preprocessor Directives (#if, #else, #elif, #endif, #define, #undef) конечно до Nemerle....


Между макросами и препроцессором очень большая разница. Макросы С — это #define в котором подставляются вычисления. В #define-е же Шарпа ничего кроме имени задать нельзя. А #if и т.п. предоставляют исключительно возможности условной компиляции и к макросам отношения не имеют.

Вот только No в этом пункте плюс для языка, а не минус. Так как текстуальные макросы в стиле С давно дескредитировали себя из-за множества проблем.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 19.05.06 20:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>Да, только вместо function надо использовать delegate, function связывает статически.


VD>Почитал у них на сайте и пришел к выоду, что это не полноценные замыкания. Они не лексические. Используется термин "динамические". Что под этим понимается не ясно, но явно возможности сохранить контекст после выхода из метода уже нет.


Да там есть проблема со стековыми переменными, по моему явный баг, когда будут править не знаю.
Re[5]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 19.05.06 20:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>В D сейчас шаблоный код стал гораздо чище и лучше чем в C++, например:


FR>>
FR>>template factorial(int n)
FR>>{
FR>>  static if (n == 1)
FR>>    const factorial = 1;
FR>>  else
FR>>    const factorial = n * factorial!(n-1);
FR>>}
FR>>


VD>Да, это лучше чем на С++, но похоже полноценностью тут не пахнет. Весьма странно выглядит этот код. Вместо возврата значения из функции "const factorial". Для меня это выглядит как объявление локальной константы.


Это и есть объявление переменной внутри шаблона
По любому красивый ход по сравнению с C++.

FR>>По моему вполне себе код на языке, да и сообщения об ошибке вывести используя static if не сложно.


VD>Можно пример?


Тут уже есть Re[4]: Таблица сранения языкво от создателей D поправленная
(template parseExponent)
Главное там pragma(msg и static assert
Re[5]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 19.05.06 20:47
Оценка:
Здравствуйте, VladD2, Вы писали:


АХ>>Здорово, мне это еще в Питоне понравилось.


VD>Я уж не знаю откуда это было содрано, но если в языке есть значения по умолчанию для параметров, то иногда действительно удобно. Бывает, что метод имеет тучу параметров, а задать нужно только 1-2. А иногда это просто порождает более понятный код. Ведь имена параметров так же являются своего рода документацией.


Из питона и содрано, а там появилось в результате адаптации tcl'ной Tk, для удобства задания значений по умолчанию, и получается содрано с tcl, но у tcl синтаксис очень специфичный, так что можно скорее сказать подсмотренно
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 21:42
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

VK>Вообще-то в D уже появилось, но пока в довольно ограниченном виде. И раз уж дженерики посчитали за шаблоны, то ifti в C#2 и Nemerle тоже есть. Но конечно ifti в C++ это беспрецедентная по своей мощности вещь, особенно если вспомнить о шаблонных конструкторах и операторах. Так что для D, C# и Nemerle следует записать Yes-.


VK>Правда простые макросы Nemerle можно использовать как более мощный аналог обычных шаблонных функций(т.е. не методов) с ifti, но все таки шаблоны и макросы это очень разные вещи. И выполняют они совершенно разные задачи на мой взгляд.


Мне кажется, что сравнение "шаллонов" у Дишников просто из рук вон плохо.

По уму нужно сравнивать языки по возможностям. Вот тогда все будет очевидно.
Так стоит отделить и сравнить отдельно:
* обобщенное программирование;
* метапрограммирование;
* вычисления во время компиляуии;
* частичные вычисления.

Это, кстати, сительно не выгодно ни С++, ни Ди, так как они не сильно вииграют в обобщенном программировании (а кое где проиграют) и сольют в чистую в метапрограммирование и частичных вычислениях (опять же за Ди не скажу, но похоже на то).

VK>Тут тоже можно было бы Yes+ написать, так как в отлове исключений поддерживается pattern-matching.


По моему от C# тут отличий не много. Все же паттерны там не полноценные вроде.

VK>
VK>
VK>
VK>
VK>
VK>
VK>
VK>
VK>
VK>
VK>
Documentation comments Yes No No Yes Yes No (plan)

VK>Почему у Nemerle No? Вроде бы есть.

Покажи как/где и не проблема поправить. Лично я не видел. Хотя это конечно не совсем язык... Это уже требования к компилятору.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 21:42
Оценка:
Здравствуйте, co, Вы писали:

co>а есть ли в D мультиметоды ?


Вроде нет. Но пусть скажут те кто знает язык лучше меня.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 21:42
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>А в C# using — чем не алиас?


Вопрос сложный. Это конечно алис, но тип он не вводит. Это просто шорткат. В Немерле и Ди же это введение полноценных типов. В Немерле так объявлены все встроенные типы вроде (int, string).

GZ>Этот раздел вообще не понял. Во многом, тут перфоманс не причем. А вот Direct native code gen в С#- есть.


Это копипаст исходной таблицы. Согласен, что притянуто за уши, но из пести слов не выкинишь. Для кого-то это важно. Только разумнее было бы назвать не "производительность", а "VM vs. direct native code".

GZ>Здесь я уже возмущался. using — это все таки полуавтоматический деструктор. В C++ дестроится или нет решает объект, в C# — клиент(или GC).


Опять же к авторам Ди вопрос. Но я с ними согласен.

GZ>Вооще-то в C есть __type/__catch/__finally. И в С++ она унаследована(правда неэквивалентна и несовместима с родным try/catch).


Приведи, плиз раздел стандарта С в которых описаны такие операторы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 21:42
Оценка: -1
Здравствуйте, volk, Вы писали:

V>Вот еще одну колонку добавить бы ( ) --- и в священные войны!


Лучше в С++ перекинуть, чтобы больше С++-ников почувствовало дискомфорт. Глядишь задумались бы над чем нибудь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 21:42
Оценка:
Здравствуйте, FR, Вы писали:

AAV>>2. Частично макротекст препроцессор в C# есть. see C# Preprocessor Directives (#if, #else, #elif, #endif, #define, #undef) конечно до Nemerle....


FR>да можно bad поставить


-1 Подробносии здесь
Автор: VladD2
Дата: 20.05.06
.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 21:56
Оценка:
Здравствуйте, FR, Вы писали:

FR>Да там есть проблема со стековыми переменными, по моему явный баг, когда будут править не знаю.


Ага, но похоже в дизайне языка. Лексические замыкания на ура проходят в языках с автоматическим управлением памятью, и хреново (точнее никак) с ручной. Вот Ди наступил на те же грабли. Гнались за производительностью, а получили хреновую реализацию.

В прочем, и синтаксисом там не важно. C# и Немерле постепенно переходят к более краткому синтаксису лямбд "параметр => выражение" и "(параметры) => выражение", а Ди использует какой-то бредовый синтаксис, да еще снабженный жуткой терминалогией вроде "функциональный литерал". Где они их только берут то?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 21:56
Оценка:
Здравствуйте, FR, Вы писали:

FR>Это и есть объявление переменной внутри шаблона

FR>По любому красивый ход по сравнению с C++.

"По сравнению" согласен. Но все же можно было с синтаксисом и по больше поработать. А то странно выглядит.

FR>Тут уже есть Re[4]: Таблица сранения языкво от создателей D поправленная

FR>(template parseExponent)
FR>Главное там pragma(msg и static assert

ОК, Ди тоже неплохо с сообщениями. Поправим в ближайшее время.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.06 21:56
Оценка:
Здравствуйте, FR, Вы писали:

FR>Из питона и содрано, а там появилось в результате адаптации tcl'ной Tk, для удобства задания значений по умолчанию, и получается содрано с tcl, но у tcl синтаксис очень специфичный, так что можно скорее сказать подсмотренно


Боюсь VB старше. В нем это было давно. А рельный прототип лучше спросить у авторов языка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 20.05.06 06:24
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


AAV>>>2. Частично макротекст препроцессор в C# есть. see C# Preprocessor Directives (#if, #else, #elif, #endif, #define, #undef) конечно до Nemerle....


FR>>да можно bad поставить


VD>-1 Подробносии здесь
Автор: VladD2
Дата: 20.05.06
.


смотрел и увидел ограниченный препроцессор
Re[7]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 20.05.06 06:24
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>Да там есть проблема со стековыми переменными, по моему явный баг, когда будут править не знаю.


VD>Ага, но похоже в дизайне языка. Лексические замыкания на ура проходят в языках с автоматическим управлением памятью, и хреново (точнее никак) с ручной. Вот Ди наступил на те же грабли. Гнались за производительностью, а получили хреновую реализацию.


Я думаю ни зачем они не гнались, просто нормально все это реализовать не так просто. Посмотрим когда подправят.

VD>В прочем, и синтаксисом там не важно. C# и Немерле постепенно переходят к более краткому синтаксису лямбд "параметр => выражение" и "(параметры) => выражение", а Ди использует какой-то бредовый синтаксис, да еще снабженный жуткой терминалогией вроде "функциональный литерал". Где они их только берут то?


Нормальный синтаксис, это просто ты на функциональщине начал загонятся
Re[7]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 20.05.06 06:24
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>Из питона и содрано, а там появилось в результате адаптации tcl'ной Tk, для удобства задания значений по умолчанию, и получается содрано с tcl, но у tcl синтаксис очень специфичный, так что можно скорее сказать подсмотренно


VD>Боюсь VB старше. В нем это было давно. А рельный прототип лучше спросить у авторов языка.


Я VB практически не знаю и не слышал что там такое есть, можно пример?
Что раньше не знаю но tcl появился 1989 году.
Re[8]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.06 10:42
Оценка:
Здравствуйте, FR, Вы писали:

FR>Я VB практически не знаю и не слышал что там такое есть, можно пример?


http://www.publicvoid.dk/NamedParametersInVBNET.aspx

FR>Что раньше не знаю но tcl появился 1989 году.


Думаю что это было и раньше. Вопрос только в том, что послужило протатипом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.06 10:43
Оценка:
Здравствуйте, FR, Вы писали:

FR>Я думаю ни зачем они не гнались, просто нормально все это реализовать не так просто. Посмотрим когда подправят.


Думаю, что они вообще ничего не подправят, так как ошибка в дизайне. Гнались они за производительностью... Это точно. Иначе бы они забили на ручное управление памтью и не получили бы проблем с теми же лексическими замыканиями.

VD>>В прочем, и синтаксисом там не важно. C# и Немерле постепенно переходят к более краткому синтаксису лямбд "параметр => выражение" и "(параметры) => выражение", а Ди использует какой-то бредовый синтаксис, да еще снабженный жуткой терминалогией вроде "функциональный литерал". Где они их только берут то?


FR>Нормальный синтаксис, это просто ты на функциональщине начал загонятся


Ненадо. Синтаксис неоправдано громоздкий. Ну, а то что они не почерпнули идеи из ФЯ — это еще одно их архитектурный просчет. Даже в МС пошли на это.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 20.05.06 11:12
Оценка:
Здравствуйте, VladD2, Вы писали:


FR>>Что раньше не знаю но tcl появился 1989 году.


VD>Думаю что это было и раньше. Вопрос только в том, что послужило протатипом.


То что это есть в VB.NET я уже нашел, но то что это было в обычном VB и когда там появилось не нашел, хотя это и не важно но интересно
Re[9]: Таблица сранения языкво от создателей D поправленная
От: FR  
Дата: 20.05.06 11:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>Я думаю ни зачем они не гнались, просто нормально все это реализовать не так просто. Посмотрим когда подправят.


VD>Думаю, что они вообще ничего не подправят, так как ошибка в дизайне. Гнались они за производительностью... Это точно. Иначе бы они забили на ручное управление памтью и не получили бы проблем с теми же лексическими замыканиями.


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

VD>>>В прочем, и синтаксисом там не важно. C# и Немерле постепенно переходят к более краткому синтаксису лямбд "параметр => выражение" и "(параметры) => выражение", а Ди использует какой-то бредовый синтаксис, да еще снабженный жуткой терминалогией вроде "функциональный литерал". Где они их только берут то?


FR>>Нормальный синтаксис, это просто ты на функциональщине начал загонятся


VD>Ненадо. Синтаксис неоправдано громоздкий. Ну, а то что они не почерпнули идеи из ФЯ — это еще одно их архитектурный просчет. Даже в МС пошли на это.


Кому просчет а кому и преимущество
Re[2]: Таблица сранения языкво от создателей D поправленная
От: Андрей Хропов Россия  
Дата: 20.05.06 11:35
Оценка: +1
Здравствуйте, volk, Вы писали:

V>Вот еще одну колонку добавить бы ( ) --- и в священные войны!


Эээ, я что-то не сообразил какую. Не подскажешь?

В принципе я уже говорил: есть расширенная таблица , являющаяся fork от таблицы на сайте D. Правда, fork был сделан давно и она подустарела (так, там нет, например, implicit type inference, который появился в D в конце 2005).

В оригинальной таблице были языки с С -подобным синтаксисом, так что Nemerle нормально к ней добавить.
Есть еще такой язык как Scala, который тоже можно было бы добавить в таблицу, так как он в многом схож с Nemerle, кроме самого главного :

Scala is extensible

The design of Scala acknowledges the fact that in practice, the development of domain-specific applications often requires domain-specific language extensions. Scala provides a unique combination of language mechanisms that make it easy to smoothly add new language constructs in form of libraries:

* any method may be used as an infix or postfix operator, and
* closures are constructed automatically depending on the expected type (target typing).

A joint use of both features facilitates the definition of new statements without extending the syntax and without using macro-like meta-programming facilities.

Уж не знаю, действительно ли это принципиальная позиция, лень было мета-систему делать или они рассчитывают на Java VM, где это трудно/невозможно .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Таблица сранения языкво от создателей D поправленная
От: _DAle_ Беларусь  
Дата: 20.05.06 12:14
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _DAle_, Вы писали:


_DA>>А при чем тут файлы, диски?

_DA>>http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf

VD>Да, все при том же. Толку от возможностей если они не полноценны? Статьи на темы вроде "как сделать сериализацию на шаблонах", или "декларативание конечных автоматов на шаблонах" заканчиваются одним и тем же. Решение работат, но без слез на него смотреть нельзя. Сообщения об ошибках никакие. Возможностей не хватает. Отладки нет. Кучи макросов вроде ХХХ_4, ХХХ_5. Скорость компиляции отвратительная.


VD>Возможно в Ди что-то изменилось в лучшую сторону, но до Немерловским макросов им обоим как до Пикина раком.


Это все хорошо, но тогда надо назвать пункт как-нибудь по-другому, не "Tuting complete mete-language". Либо поставить в этом Yes, где следует, и добавить еще один.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[6]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.06 13:02
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>Это все хорошо, но тогда надо назвать пункт как-нибудь по-другому, не "Tuting complete mete-language". Либо поставить в этом Yes, где следует, и добавить еще один.


Возможно. Надо подумать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Таблица сранения языкво от создателей D поправленная мно
От: stele Россия www.stele.su
Дата: 20.05.06 16:43
Оценка: :))
А сейчас я внимательно прочитал название темы.

Таблица сранения языкво от создателей D поправленная мной

Фрейд фарева!
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 648>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Re[3]: Таблица сранения языкво от создателей D поправленная
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 22.05.06 06:21
Оценка: -1
Андрей Хропов,

АХ>A joint use of both features facilitates the definition of new statements without extending the syntax and without using macro-like meta-programming facilities.


Новые операторы можно делать и в Джаве. Заводишь новый класс и в нём метод Другое дело, что нужен разумный компромисс между гибкостью и простотой синтаксиса. Чем проще синтаксис, тем легче учить, сопровождать, и тем язык быстрее в мэйнстрим проникает, но тем тяжелее делать нетривиальные вещи. Ну и от базовых абстракций языка конечно зависит, но тенденция где-то такая.

АХ>Уж не знаю, действительно ли это принципиальная позиция, лень было мета-систему делать или они рассчитывают на Java VM, где это трудно/невозможно .


JVM — это стековая машина. Реализации Схемы/Лиспа/Форта для JVM есть, и не одна.
Такой выбор для Скалы был явно дизайнерским решением.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[8]: Таблица сранения языкво от создателей D поправленная
От: Курилка Россия http://kirya.narod.ru/
Дата: 22.05.06 08:07
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, VladD2, Вы писали:


VD>>Здравствуйте, FR, Вы писали:


FR>>>Из питона и содрано, а там появилось в результате адаптации tcl'ной Tk, для удобства задания значений по умолчанию, и получается содрано с tcl, но у tcl синтаксис очень специфичный, так что можно скорее сказать подсмотренно


VD>>Боюсь VB старше. В нем это было давно. А рельный прототип лучше спросить у авторов языка.


FR>Я VB практически не знаю и не слышал что там такое есть, можно пример?

FR>Что раньше не знаю но tcl появился 1989 году.

В лиспе тоже именованные параметры есть
Думаю они не в первом варианте появились, но в годах семидесятых уже наверняка были...
Re[3]: Таблица сранения языкво от создателей D поправленная
От: naryl  
Дата: 29.11.07 02:45
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Андрей Хропов wrote:

>> VD>- — возможность поддерживается слабо.
>> Я бы "-" убрал. В D полноценный GC.
>> Можно и вручную управлять памятью, но это в специальных случаях.
C>Минус стоит правильно — в D сейчас возможно использовать только
C>консервативный GC, сама семантика языка (юнионы, например) не позволяет
C>использовать точный GC.
Почему это консервативный GC = плохой GC?
На самом деле, семантика разрабатывалась с учетом возможности написания максимально точных сборщиков мусора при поддержке всех типов C. Копирующий/уплотняющий сборщик мусора для D написать можно.
Есть добровольцы? =)
Re: Таблица сранения языкво от создателей D поправленная мно
От: naryl  
Дата: 29.11.07 03:04
Оценка:
IFTI для D:

import std.stdio: writefln;

T Square(T)(T t)
{
return t * t;
}

void main()
{
writefln("The square of %s is %s", 3, Square(3));
}
Re: Таблица сранения языкво от создателей D поправленная мно
От: naryl  
Дата: 29.11.07 03:22
Оценка:
Dynamic class loading и в Java и в D есть через либы
JDK (Custom ClassLoader) и DDL соответственно. Почему у Java — yes, а у D — no?
Насчет остальных языков — ничего не могу сказать.

Default parameter value есть в D и C++

Indexer есть в D.

Если в таблице уже есть много планов, то можно и еще один добавить: D Attributes.

Console interpreter. теоретически, программу на D можно запустить как dmd -run main.d но это не совсем то.
А для C/C++ — Ch

Typesafe variant — как уже было упомянуто, std.boxer

tuple data type — есть в D, но только compile-time

spliced strings... резать строки в D можно вроде: writef("Hello, world!"[0 .. 5]);
или даже writef("Hello, world!"[0 .. $ — ", world!".length]);
и не только строки.
Или spliced strings — это какой-то новый тип string literal?

Lazy evaluation: В D есть, но не по умолчанию.
void log(lazy char[] msg)
{
if (logging)
fwritefln(logfile, msg);
}

void foo(int i)
{
log("Entering foo() with i set to " ~ toString(i));
}

Analyze AST и Modify AST для D планируется.

IDE support и Refactoring — у descent скоро появится семантический анализатор со всеми вытекающими последствиями, такими как рефакторинг, подсветка ошибок на лету, в том числе в шаблонах и CTFE... www.dsource.org/projects/descent
Re: Таблица сранения языкво от создателей D поправленная мно
От: VoidEx  
Дата: 29.11.07 06:40
Оценка:
Чота авторизация глюканула, и анонимного не появилось... Заново напишу.

По-моему, единственный способ оценить инструмент — как он соответствует тому, для чего создавался, или где используется (если вдруг используется не там и не так, для чего создавался).
Остальное — пенисометрия.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VoidEx  
Дата: 29.11.07 11:09
Оценка:
Уточню. Сравнение инструментов между собой может помочь в выборе инструмента, но тогда надо указывать, для чего он создавался/использовался, а уже ЯПы в этих группах сравнивать по "фичам".
А то так можно и LUA с Haskell'ем сравнивать.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: Kisloid Мухосранск  
Дата: 29.11.07 12:02
Оценка: +1
Здравствуйте, VoidEx, Вы писали:

VE>Уточню. Сравнение инструментов между собой может помочь в выборе инструмента, но тогда надо указывать, для чего он создавался/использовался, а уже ЯПы в этих группах сравнивать по "фичам".

VE>А то так можно и LUA с Haskell'ем сравнивать.

Эммм, вообще-то все перечисленные в таблице, это языки общего назначения.
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.11.07 12:21
Оценка:
Здравствуйте, naryl, Вы писали:

N>Dynamic class loading и в Java и в D есть через либы

N>JDK (Custom ClassLoader) и DDL соответственно. Почему у Java — yes, а у D — no?
N>Насчет остальных языков — ничего не могу сказать.

Информация по Ди в первой таблице была взята из таблицы созданной самим автором Ди. Так что все вопросы к нему. Значит он считает, что таки динамической загрузки нет.

N>Default parameter value есть в D и C++


С++ перепутан с С. По Ди опять же информация бралась с их таблицы (если речь о первой таблице).

N>Console interpreter. теоретически, программу на D можно запустить как dmd -run main.d но это не совсем то.

N>А для C/C++ — Ch

Мне мало верится, что С++ можно полноценно интерпретировать. Текстуальные макросы и инклюды все таки.

N>Typesafe variant — как уже было упомянуто, std.boxer


Ага. Ошибок много.

N>tuple data type — есть в D, но только compile-time


Не понял.

N>spliced strings... резать строки в D можно вроде: writef("Hello, world!"[0 .. 5]);

N>или даже writef("Hello, world!"[0 .. $ — ", world!".length]);
N>и не только строки.
N>Или spliced strings — это какой-то новый тип string literal?

Речь не о том. Работу со строками в PHP, Руби или Немерле видел? Вот это о том.

N>Lazy evaluation: В D есть, но не по умолчанию.

N>void log(lazy char[] msg)
N>{
N> if (logging)
N> fwritefln(logfile, msg);
N>}

Видимо он появился после того как была скопирована таблица. Вообще, она устарела и не полноценна.

N>void foo(int i)

N>{
N> log("Entering foo() with i set to " ~ toString(i));
N>}

N>Analyze AST и Modify AST для D планируется.


Ой, если описывать планы, то можно очень далеко зайти.

N>IDE support и Refactoring — у descent скоро появится семантический анализатор со всеми вытекающими последствиями, такими как рефакторинг, подсветка ошибок на лету, в том числе в шаблонах и CTFE... www.dsource.org/projects/descent


1. Скоро появистя — это не серьзно.
2. От момента когда появится компонент помогающий собирать метаданные, до момента когда будет реализованы хотя бы основные фичи того же рефакторинга может пройти очень много времени. В том же Немерле для анализа кода испоьзуется просто код компилятора, и тем не менее многих фич среда не поддерижвает.

Так что когда убдет, тогда и запишем.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.11.07 12:21
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>По-моему, единственный способ оценить инструмент — как он соответствует тому, для чего создавался, или где используется (если вдруг используется не там и не так, для чего создавался).

VE>Остальное — пенисометрия.

Дык и это тоже будет пенисометрия.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 29.11.07 12:32
Оценка:
Здравствуйте, VladD2, Вы писали:

N>>IDE support и Refactoring — у descent скоро появится семантический анализатор со всеми вытекающими последствиями, такими как рефакторинг, подсветка ошибок на лету, в том числе в шаблонах и CTFE... www.dsource.org/projects/descent


VD>1. Скоро появистя — это не серьзно.

VD>2. От момента когда появится компонент помогающий собирать метаданные, до момента когда будет реализованы хотя бы основные фичи того же рефакторинга может пройти очень много времени. В том же Немерле для анализа кода испоьзуется просто код компилятора, и тем не менее многих фич среда не поддерижвает.

VD>Так что когда убдет, тогда и запишем.


Для D есть не только descent
Есть еще Entice Designer:


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Таблица сранения языкво от создателей D поправленная
От: Кодт Россия  
Дата: 29.11.07 14:44
Оценка: :))) :))
Здравствуйте, VladD2, Вы писали:

E>>А можно пример RAII в Nemerle? Или ты в качестве RAII конструкцию using рассматриваешь?

VD>using (x = SomeResource())
VD>{
VD>    используем ресурс.
VD>} // здесь, что бы не произошло, ресурс освободится.

VD>Причем, можно и С++-аналог сделать, в общем-то. Только потребности нет. Люди решают в первую очередь те задачи которые вызвают проблемы.

Извините что встреваю в разговор годичной давности. Но раз уж кто-то naryl и поднял эту ветку.

Тут знаете в чём особенность. В С++ не просто Resource Acquision Is Initialization, но ещё и ... Is Definition.
Фактически, объявление каждой локальной переменной открывает новый блок видимости (немножко урезанный в правах, естественно)
{Foo x;
 .....
 {Bar y;
  .....
  // урезан в том плане, что нельзя написать
  Buz x; // error: redefinition
  .....
}}

То есть, обычно мы основательно экономим на скобках.
Точно так же, как в ML-языках конструкция let-in
let x = foo in
 let y = bar in
  (* можно *)
  let x = buz in
   .....
   ;;

let
 x = foo
 y = bar
 x = buz
in
 .....
;;

То есть, своего рода синтаксический сахар. Поэтому RAII в С++ удобно использовать — хотя и с риском разнообразных граблей.
Но это вообще в духе С/С++ — были бы они русскими, назывались бы Ш__ и Ш____ соответственно (детские грабли и недетские грабли).

А в других языках — извольте попрыгать-поплясать. Скобки и табуляцию расставить, как минимум.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[3]: Таблица сранения языкво от создателей D поправленная
От: VoidEx  
Дата: 29.11.07 15:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Дык и это тоже будет пенисометрия.


Ну это да
Но по крайней мере она может оказаться полезной и более объективной.
А то так можно привести таблицу сравнения какого-нибудь профессионального фотоаппарата и карманной мыльницы. Будет 100 пунктов, в каждом из которых профессиональный будет "рвать" мыльницу, и только 2 пункта за мыльницу — размер и цена
Т.е. если и проводить сравнение, то сначала между группами (типа про-фотики лучше кач-вом, а мыльницы — размерами), а потом сравнения внутри группы.
Хотя от пенисометрии не деться, конечно
Re[3]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.11.07 16:03
Оценка: :)
Здравствуйте, VoidEx, Вы писали:

VE>Уточню. Сравнение инструментов между собой может помочь в выборе инструмента, но тогда надо указывать, для чего он создавался/использовался, а уже ЯПы в этих группах сравнивать по "фичам".

VE>А то так можно и LUA с Haskell'ем сравнивать.

Я не скажу за LUA, но то что люди используют для решения совершенно однотипных задач и Haskell, Java, и даже С++ с Nemerle — это факт. Треп о том, что для каждого дела нужен свой инструмент звучит обычно чтобы оправдать свою лень (нежелание изучать другие инструменты (языки)). На практике язык выбирается тот, что известен и очень часто это язык наименее подходящий для решения стоящей перед программистом проблемы. Классический пример — описание бизнес-логики на С++. (Тот же Дворкин занимался этим регулярно.) Какой тут критерий выбора С++? Да самый банальный. Человек просто не хорошо знает С++ и или вообще не знаком с другими языками, или знаком с ними посредственно, или знаком только с еще менее мощьными зыками. Причем в защиту С++ будут приводиться просто фиеричные аргументы... фиеричные для тех кто хорошо знает кроме С++ еще и другие языки.

Конечно есть критерии типа: Мене не приемлем .NET потому что я пишу высокопроизводительные программы под IBM AIX дремучей версии и для нее банально нет даже Mono или Mono не обеспечивает приемлемой производительлности. Или: Я ищу .NET-язык (тип подставить по вкусу). Но как раз так ставят вопрос еденицы. В большинстве случаев выбор определяется банальными домыслами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.11.07 16:03
Оценка:
Здравствуйте, eao197, Вы писали:

E>Для D есть не только descent

E>Есть еще Entice Designer:...

Как я понял из описания полноценного комплита там нет (Simplified code completion for dfl, std and tango), т.е. комлейшон только для стандартных библиотек. О рефакторинге инавигации по коду, хинтах, а темболее о рефакторинге речь вообще не идет. Сюдя по всему не хватает качественного движка парсинга, о чем и говорил naryl.

Так что... когда сделают, "будем погядеть".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.11.07 16:26
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>А то так можно привести таблицу сравнения какого-нибудь профессионального фотоаппарата и карманной мыльницы. Будет 100 пунктов, в каждом из которых профессиональный будет "рвать" мыльницу, и только 2 пункта за мыльницу — размер и цена


1. Ну, дык так оно и есть. Еще, правда, простота использования, что очень важно для не профи.
2. С ценой не факт. Nikon 40D стоит около 15 000 руб., что сопоставимо с мыльницами.
3. Порвут они далеко не все. Многие мыльницы очень даже могут посоревноваться.
4. Многие "про" типа того же Sony A проиграют даже мыльницам.

Так что если не профи решит выборать фотоаппорат, то такое сравнение ему будет очень интересно.

В прочем, анлогии тут опять таки мало-уместны. Все же все ЯП полны по Тьюрингу, а вот фотоаппораты очень сильно различаются по тому, что они позволяют делать.

VE>Т.е. если и проводить сравнение, то сначала между группами (типа про-фотики лучше кач-вом, а мыльницы — размерами), а потом сравнения внутри группы.


В общем, согласен. Но только если у фотоаппоратов есть четкие разграничения:
* Мыльница / Зеркалка со сменной оптикой.
* Полупроффесиональная зеркалка / проффесиональная зеркалка.
* Корманная мыльница / рюкзачная мыльнца .
и т.п.

То вот ЯП так не деляся. Почти на всех можно решать большую часть задач. Отличие будет:
1. Нэйтив / управляемый (платформный).
2. Динамический / статически типизированный.
3. По поддерживаемым парадигмам.
и т.п.

VE>Хотя от пенисометрии не деться, конечно


Дык это она и есть.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: VoidEx  
Дата: 29.11.07 19:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я не скажу за LUA, но то что люди используют для решения совершенно однотипных задач и Haskell, Java, и даже С++ с Nemerle — это факт. Треп о том, что для каждого дела нужен свой инструмент звучит обычно чтобы оправдать свою лень (нежелание изучать другие инструменты (языки)). На практике язык выбирается тот, что известен и очень часто это язык наименее подходящий для решения стоящей перед программистом проблемы. Классический пример — описание бизнес-логики на С++. (Тот же Дворкин занимался этим регулярно.) Какой тут критерий выбора С++? Да самый банальный. Человек просто не хорошо знает С++ и или вообще не знаком с другими языками, или знаком с ними посредственно, или знаком только с еще менее мощьными зыками. Причем в защиту С++ будут приводиться просто фиеричные аргументы... фиеричные для тех кто хорошо знает кроме С++ еще и другие языки.


К сожалению, одним из очень сильных "плюсов инструмента" (в кавычках — ибо на самом деле не его это плюс) является умение им пользоваться. И так очень много где
Поэтому обычно, чтобы заставить человека учить другие ЯПы (если он сам вдруг не интересуется), его еще надо убедить, что на другом он получит преимущество.
А вот конкретно в плюсы инструмента можно порог вхождения написать. Я хотел тут Curry глянуть, но то ли не туда смотрел, но простого а-ля WinHUGS интерпретатора не нашел.
Re[4]: Таблица сранения языкво от создателей D поправленная
От: Cyberax Марс  
Дата: 30.11.07 06:09
Оценка: 33 (1)
naryl wrote:
> C>Минус стоит правильно — в D сейчас возможно использовать только
> C>консервативный GC, сама семантика языка (юнионы, например) не позволяет
> C>использовать точный GC.
> Почему это консервативный GC = плохой GC?
По определению. Для него недоступно огромное количество оптимизаций.

> На самом деле, семантика разрабатывалась с учетом возможности написания

> максимально точных сборщиков мусора при поддержке всех типов C.
> Копирующий/уплотняющий сборщик мусора для D написать можно.
Нельзя. Некоторые вещи (типа union'ов) не позволяют точно сказать,
является ли число 0x23410921 в поле структуры указателем или просто
таким странным int'ом.

> Есть добровольцы? =)

Я как-то думал заняться (года три назад), но сейчас точно займусь
чем-либо более интересным.
Posted via RSDN NNTP Server 2.1 beta
Sapienti sat!
Re[5]: Таблица сранения языкво от создателей D поправленная
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.12.07 13:22
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>К сожалению, одним из очень сильных "плюсов инструмента" (в кавычках — ибо на самом деле не его это плюс) является умение им пользоваться. И так очень много где


+1

VE>Поэтому обычно, чтобы заставить человека учить другие ЯПы (если он сам вдруг не интересуется), его еще надо убедить, что на другом он получит преимущество.


А вот это бесполезно. Знаешь что такое Блаб?

VE>А вот конкретно в плюсы инструмента можно порог вхождения написать. Я хотел тут Curry глянуть, но то ли не туда смотрел, но простого а-ля WinHUGS интерпретатора не нашел.


От части согласен. Проблема в том, что кроме это только один из останавливающих фактовро. И не самый значимый. Я знаю многих людей которые могли бы освоить много чего, но замкнулись на произведениях Страуструпа, МС или Сана.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.