powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Язык D как альтернатива C++0x
25 сообщений из 166, страница 2 из 7
Язык D как альтернатива C++0x
    #36739881
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl
Тут беда в том, что указатель на функцию, возвращающую указатель на функцию, плохо читается и в трезвом состоянии

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

Так ли хорошо вводить в язык все новые и новые фичи? Может быть, для совершенствования редко используемых вещей лучше не изменять язык широкого применения?

Синтаксическая сложность текста - одна из трудностей при изучении кода.

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

Когда в стандарт из boost вносят shared_ptr - это понятно. А вот скажем вносить в стандарт C++ (или в STL) из того же boost функционал по обработке изображений вряд ли хорошая идея. В STL надо вносить то, что широко применяется.

D получается экзотичным языком на мой взгляд, не конкурирующим с С++, а уходящим дальше от него, и он не видится мне массовым языком, все-таки массовое должно быть довольно простым. А С++ уже довольно не прост, и без изучения, кроме С++ и MSDN, книг типа Саттера наверняка будет применяться с косяками, это уже на его (С++) уровне сложности.

На D будут писать те, кого порадует изучение его прибамбасов. А реальность заставит находить тех, кто есть в наличии, и выбирать то, на чем они смогут писать - С++.
И получилось у меня, отвечая на вопрос топика, что D не альтернатива ни С++, ни С++0х как его следующей версии.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36739913
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychSiemarglНо оверхед - т.е потеря скорости, тут не вносится. Чисто компилятивный изыск.а как у них с потерями скорости при компиляции шаблонов?
Никак. Все же однозначно компилируется.

Процесс компиляции сильно быстрее чем в С++ (заголовков нет), скорость выполнения программ - мало нашел тестов, в тех что нашел - чуть медленнее gcc. Оптимизатор у Брайта никогда не был топовым.


teo609,
C++ непростой язык.

D пытаются создать немного проще, чем C++. Но поскольку основные парадигмы совпадают, в общем он по сложности такой же.

Единственное, исходники STL в реализации D должны проще выглядеть =)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740065
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl wrote:

> Единственное, исходники STL в реализации D должны проще выглядеть =)

Блин, если и там есть STL, не буду его использовать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740108
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Там Фобос =)

Про переписывание STL на D Александреску писал, что в лоб красивше не вышло. Потому библиотека другая, без итераторов.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740166
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl wrote:

> Там Фобос =)
>
> Про переписывание STL на D Александреску писал, что в лоб красивше не
> вышло. Потому библиотека другая, без итераторов.

Тогда другое дело.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740175
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglMasterZiv,

Там Фобос =)


А вместо boost-а Демос ???
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740292
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan),
Почти. Есть альтернативная Танго .

Ссылка на Фобос .
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740683
Фотография quaid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglалчностьНо синтаксис С++ не чуть не уступает:
Код: plaintext
1.
int* array[ 3 ];

Это массив указателей, а не указатель на массив, как первые два примера ))))))


В данном примере array это и массив указателей, и указатель на массив одновременно. Интерпретация зависит от контекста кода, в котором используется этот идентификатор.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36741028
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglалчность
в таких случаях говорят "палка на 2х концах",
с одной стороны - синтакс С++ жутко выглядит,
с другой - указатели на функции невозможно спутать с какими-либо другими указателями, даже находясь в нетрезвом состоянии )

Тут беда в том, что указатель на функцию, возвращающую указатель на функцию, плохо читается и в трезвом состоянии (

Та ладно.
Давным давно можно делать так:
Код: plaintext
1.
2.
3.
4.
typedef int int_func();
typedef int_func* ptr_func();

ptr_func* pf; //  указатель на функцию, возвращающую указатель на функцию
И кому нужна читаемость, тот так и делает.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36741916
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот. Первое расстройство. Пример генерации ряда Фиббоначи не хочет компилиться. И я не могу в исходниках Фобоса найти, почему =(
Т.е. синтаксис шаблонов не слаще.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
import std.stdio;
import std.range;

int main(char[][] args)
{

	foreach (f; take( 50 , recurrence!("a[n..1]+a[n..2]")( 0 ,  1 )))
	{
		writeln(f);
	}

    return  0 ;
}
dmd hello_fib.dhello_fib.d(8): Error: template std.range.take(R) if (isInputRange!(R) && !hasSlicing!(R)) does not match any function template declaration
hello_fib.d(8): Error: template std.range.take(R) if (isInputRange!(R) && !hasSlicing!(R)) cannot deduce template function from argument types !()(int,Recurrence!(fun,int,2u))
hello_fib.d(8): Error: foreach: _error_ is not an aggregate type
Пошел дочитывать книжку про Танго на 200стр окромя 200стр доки =(
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36741923
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Siemargl wrote:

> Единственное, исходники STL в реализации D должны проще выглядеть =)

Блин, если и там есть STL, не буду его использовать.

Вы не любите кошек?
Вы просто не умеете их готовить! :D
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36741965
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Офф/2
Anatoly Moskovsky
Та ладно.
Давным давно можно делать так:

Точно. я так и делал, пока компилятор не загнулся. Точнее, один компилятор (Watcom) и один линкер (optlink) на такой вот конструкции =)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742008
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность
Интересно, а такое можно на шаблонах организовать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void TraceVariable(const char* name,int val)
{
     TRACE("%s=%d\n",name,val);
}
#define TRACE_VALUE(X) TraceVariable(#X,X)

int main()
{
    int a= 4 ,b= 7 ,c= 10 ;
    TRACE_VALUE(a);
    TRACE_VALUE(b);
    TRACE_VALUE(c);
}

Нашел способ проще (

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
template _TRACE2(alias var)
{
    void _TRACE2()
    {
        debug
        {
            writefln("%s %s=%s", __FILE__, var.stringof, var);
        }
    }
}
...
_TRACE2!(i);
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742131
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Точно. я так и делал, пока компилятор не загнулся. Точнее, один компилятор (Watcom) и один линкер (optlink) на такой вот конструкции =)
Ну во-первых в том топике не "конструкция" а сообщение об ошибке без примера кода.
Во-вторых, из той ошибки никак не следует что typedef с прототипами вместо указателей не будет работать в Watcom'е.

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

А для остальных всегда можно переписать так:
Код: plaintext
1.
2.
3.
4.
typedef int (*p_int_func)();
typedef p_int_func (*p_ptr_func)();

p_ptr_func pf; //  указатель на функцию, возвращающую указатель на функцию
и это точно так же читаемо и поддерживается на 100% всеми компиляторами С и С++

А как будет на D инлайновая декларация для указателя на функцию, возвращающую указатель на функцию?
Код: plaintext
1.
2.
3.
4.
// C/C++
int (*(*pf)())();
// D
int function() function() pf; //так?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742444
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemargl
Точно. я так и делал, пока компилятор не загнулся. Точнее, один компилятор (Watcom) и один линкер (optlink) на такой вот конструкции =)
Ну во-первых в том топике не "конструкция" а сообщение об ошибке без примера кода.
Во-вторых, из той ошибки никак не следует что typedef с прототипами вместо указателей не будет работать в Watcom'е.

Там 4 вложенных map<>. Проблема не в синтаксисе, а в переполнении буфера компилятора - слишком длинно разворачивается конструкция.
Anatoly Moskovsky
А как будет на D инлайновая декларация для указателя на функцию, возвращающую указатель на функцию?
Код: plaintext
1.
2.
3.
4.
// C/C++
int (*(*pf)())();
// D
int function() function() pf; //так?

Именно.
А на массив
Код: plaintext
int[]* pa;
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742601
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded wrote:

> Вы не любите кошек?
> Вы просто не умеете их готовить! :D

Да умею я их готовить. Просто как не приготовь, такое Г получается,
что тошнит.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742622
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, на вкус и цвет советчиков нет, один любит арбуз, другой свиной хрящик... Может я конесно чего-то е понимаю, но меня stl устаривает
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36745210
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНу вот. Первое расстройство. Пример генерации ряда Фиббоначи не хочет компилиться. И я не могу в исходниках Фобоса найти, почему =(
Т.е. синтаксис шаблонов не слаще.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import std.stdio;
import std.range;
int main(char[][] args)
{
	foreach (f; take( 50 , recurrence!("a[n..1]+a[n..2]")( 0 ,  1 )))
	{
		writeln(f);
	}

    return  0 ;
}

Нашел причину - Александреску активно переписывает этот модуль (range.d) в текущей версии - слишком новаторский и пока нерабочий. Кстати заказал его книжку по D на Амазоне =)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36745856
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНашел причину - Александреску активно переписывает этот модуль (range.d) в текущей версии - слишком новаторский и пока нерабочий. Кстати заказал его книжку по D на Амазоне =)
Ааа, для. Скомпилил, взяв range.d из предыдущей версии =)

И даже такое
Код: plaintext
1.
2.
    auto piapprox = recurrence!("a[n] + (n & 1 ? 4. : -4.) / (2 * n + 3)")( 4 .);
    foreach (e; take(piapprox,  20 )) writeln(e); 
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36757837
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
teo609Я бы вообще предложил подумать над тем, что усложнение текста программы не является плюсом

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

Один из инженеров Google
Один из ведущих инженеров Google — Роб Пайк (Rob Pike) — выступил на конференции O'Reilly Open Source Convention (OSCON) и выразил мнение корпорации о современных языках разработки и месте C++ и Java в них. Он отозвался об этих индустриальных китах очень негативно, назвав их многословными, чрезмерно сложными и неадекватными к применению в решении задач современной компьютерной инфраструктуры.
"Я думаю, что эти языки слишком сложны для использования, слишком трудны для понимания, слишком замысловаты. Они очень многословны, их сложность, громоздкость и непонятность возрастают со временем", — заявил Роб.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36758090
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609
На D будут писать те, кого порадует изучение его прибамбасов. А реальность заставит находить тех, кто есть в наличии, и выбирать то, на чем они смогут писать - С++.
И получилось у меня, отвечая на вопрос топика, что D не альтернатива ни С++, ни С++0х как его следующей версии.
Если D будет обеспечивать кодогенерацию, достаточно низкоуровневую чтобы писать драйверы оборудования и части ОС, сопрягаться по способу передачи аргументов с другими языками и технологиями - то он будет конкурировать с C/С++. Если нет - то это обычный язык коих уже очень много.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36759900
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonteo609
На D будут писать те, кого порадует изучение его прибамбасов. А реальность заставит находить тех, кто есть в наличии, и выбирать то, на чем они смогут писать - С++.
И получилось у меня, отвечая на вопрос топика, что D не альтернатива ни С++, ни С++0х как его следующей версии.
Если D будет обеспечивать кодогенерацию, достаточно низкоуровневую чтобы писать драйверы оборудования и части ОС, сопрягаться по способу передачи аргументов с другими языками и технологиями - то он будет конкурировать с C/С++. Если нет - то это обычный язык коих уже очень много.
С этим вопросов нет, транслируется в обычный код, почти как Сишный, но с вызовами функций при операциях с массивами итп.
Совместим полностью с С , COM , и частично с С++ .
Но поддерживает пока только x86 платформу.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36765913
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Нашел способ проще (

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
template _TRACE2(alias var)
{
    void _TRACE2()
    {
        debug
        {
            writefln("%s %s=%s", __FILE__, var.stringof, var);
        }
    }
}
...
_TRACE2!(i);

! после _TRACE2 - это опечатка?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36765977
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность! после _TRACE2 - это опечатка?не, так они в D шаблонные функции вызывают, их пугает конструкция _TRACE2< int >( i );
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36766042
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychалчность! после _TRACE2 - это опечатка?не, так они в D шаблонные функции вызывают, их пугает конструкция _TRACE2< int >( i );
Да. Целая дискуссия была по поводу ограниченности конструкций
templX < x < 3 >, потому решили использовать круглые скобки.

Но в большинстве случаев компилятор D позводяет опускать и ! и тип и вызов метода шаблона. Всегда, когда определенность однозначна.
А там однозначность достигается специализациями и типов и значений и умолчаниями и еще десятком способов )

Например, вместо templateMethod!(templParam).templateMethod(var) можно писать templateName(var).

Пока я завязал с подробностями в D, пока не получу и не почитаю манифест Александреску (TDPL), как они это задумывали.
А читать исходники стандартной библиотеки Фобос (замена STL) тяжело себя заставить (хотя выглядит проще чем STL).
...
Рейтинг: 0 / 0
25 сообщений из 166, страница 2 из 7
Форумы / C++ [игнор отключен] [закрыт для гостей] / Язык D как альтернатива C++0x
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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