The D Programming Language
От: FR  
Дата: 01.08.10 12:43
Оценка: 22 (2)
Книга Александреску "The D Programming Language" уже около месяца как продается в бумажном виде
http://www.amazon.com/D-Programming-Language-Andrei-Alexandrescu/dp/0321635361

Тут http://www.informit.com/articles/printerfriendly.aspx?p=1609144 одна из глав.

В принципе глава неплохо демонстрирует мощь языка. Многие вещи который встраивают в другие языки (например go) здесь
реализованы в стандартной библиотеке, мне особенно понравился "паттерн матчинг" :


receive(
   (long x) { ... },
   (string x) { ... },
   (double x, double y) { ... },
   ...
   (Variant any) { ... }
);
Re: The D Programming Language
От: Temoto  
Дата: 01.08.10 12:51
Оценка:
FR>Книга Александреску "The D Programming Language" уже около месяца как продается в бумажном виде
FR>http://www.amazon.com/D-Programming-Language-Andrei-Alexandrescu/dp/0321635361

FR>Тут http://www.informit.com/articles/printerfriendly.aspx?p=1609144 одна из глав.


FR>В принципе глава неплохо демонстрирует мощь языка. Многие вещи который встраивают в другие языки (например go) здесь

FR>реализованы в стандартной библиотеке, мне особенно понравился "паттерн матчинг" :


FR>
FR>receive(
FR>   (long x) { ... },
FR>   (string x) { ... },
FR>   (double x, double y) { ... },
FR>   ...
FR>   (Variant any) { ... }
FR>);
FR>


А как этот receive работает? Что тут не встроено?
Re[2]: The D Programming Language
От: FR  
Дата: 01.08.10 13:02
Оценка:
Здравствуйте, Temoto, Вы писали:


T>А как этот receive работает? Что тут не встроено?



Выбирает сообщения из очереди потока.
Тут ничего ни встроено receive самая обычная шаблонная функция которая принимает переменное число аргументов.
Каждый аргумент это делегат или лямбда, receive смотрит в очередь и если там есть данные нужного типа вызывает
соответствующую лямбду.
Я посмотрел в исходники concurrency.d вся реализация несколько десятков строк, в С++ например сделать это
так просто практически нереально.
Re[3]: The D Programming Language
От: Temoto  
Дата: 01.08.10 13:18
Оценка:
T>>А как этот receive работает? Что тут не встроено?


FR>Выбирает сообщения из очереди потока.

FR>Тут ничего ни встроено receive самая обычная шаблонная функция которая принимает переменное число аргументов.
FR>Каждый аргумент это делегат или лямбда, receive смотрит в очередь и если там есть данные нужного типа вызывает
FR>соответствующую лямбду.
FR>Я посмотрел в исходники concurrency.d вся реализация несколько десятков строк, в С++ например сделать это
FR>так просто практически нереально.

То есть запись
 (long x) { writeln(x); }
это лямбда \x -> writeln x или lambda x: writeln(x) ?
Re[4]: The D Programming Language
От: FR  
Дата: 01.08.10 13:19
Оценка:
Здравствуйте, Temoto, Вы писали:


T>То есть запись
 (long x) { writeln(x); }
это лямбда \x -> writeln x или lambda x: writeln(x) ?


Да.
Re[5]: The D Programming Language
От: Temoto  
Дата: 01.08.10 14:02
Оценка: :)))
T>>То есть запись
 (long x) { writeln(x); }
это лямбда \x -> writeln x или lambda x: writeln(x) ?


FR>Да.


Очень круто receive сделан.
Re[6]: The D Programming Language
От: FR  
Дата: 01.08.10 14:34
Оценка:
Здравствуйте, Temoto, Вы писали:


T>Очень круто receive сделан.


Понятно что на фоне функциональщины фигня, но на фоне C++ очень даже круто.
Re: The D Programming Language
От: matumba  
Дата: 12.08.10 12:04
Оценка:
Здравствуйте, FR, Вы писали:

FR>Книга Александреску "The D Programming Language" уже около месяца как продается в бумажном виде


...и всё равно в сети нет PDF версии. С таким началом D можно уже закапывать мелкими совками.
Отсутствие вменяемой документации сильно тормозит популяризацию этого чудо-языка.
Если у кого будет электронный вариант, киньте ссылочкой, плиз?
Re[2]: The D Programming Language
От: x-code  
Дата: 12.08.10 16:32
Оценка:
Здравствуйте, matumba, Вы писали:

FR>>Книга Александреску "The D Programming Language" уже около месяца как продается в бумажном виде

M>...и всё равно в сети нет PDF версии. С таким началом D можно уже закапывать мелкими совками.
M>Отсутствие вменяемой документации сильно тормозит популяризацию этого чудо-языка.
M>Если у кого будет электронный вариант, киньте ссылочкой, плиз?

Нету. Как только появится — на торрентах сразу
И "Elements of programming" там же рядом продается
Были бы они в электронном виде, я бы обе эти книги купил.
Re[3]: The D Programming Language
От: x-code  
Дата: 13.08.10 07:06
Оценка:
Здравствуйте, x-code, Вы писали:

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


FR>>>Книга Александреску "The D Programming Language" уже около месяца как продается в бумажном виде

M>>...и всё равно в сети нет PDF версии. С таким началом D можно уже закапывать мелкими совками.
M>>Отсутствие вменяемой документации сильно тормозит популяризацию этого чудо-языка.
M>>Если у кого будет электронный вариант, киньте ссылочкой, плиз?

Вот вроде.
здесь
В каком-то извращенном виде, скачать нельзя (по крайней мере я не вижу как можно), но читать вроде можно.
Re[2]: The D Programming Language
От: FR  
Дата: 13.08.10 11:15
Оценка:
Здравствуйте, matumba, Вы писали:


M>...и всё равно в сети нет PDF версии. С таким началом D можно уже закапывать мелкими совками.


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

Вот последний http://www.digitalmars.com/d/2.0/changelog.html в котором одни багфиксы как бы
подтверждает надежду.

M>Отсутствие вменяемой документации сильно тормозит популяризацию этого чудо-языка.


По моему тут http://www.digitalmars.com/d/2.0/index.html вполне вменяемо.
Re: The D Programming Language
От: vpchelko  
Дата: 13.08.10 12:55
Оценка:
Здравствуйте, FR, Вы писали:

FR>Книга Александреску "The D Programming Language" уже около месяца как продается в бумажном виде

FR>http://www.amazon.com/D-Programming-Language-Andrei-Alexandrescu/dp/0321635361

FR>Тут http://www.informit.com/articles/printerfriendly.aspx?p=1609144 одна из глав.


FR>В принципе глава неплохо демонстрирует мощь языка. Многие вещи который встраивают в другие языки (например go) здесь

FR>реализованы в стандартной библиотеке, мне особенно понравился "паттерн матчинг" :


FR>
FR>receive(
FR>   (long x) { ... },
FR>   (string x) { ... },
FR>   (double x, double y) { ... },
FR>   ...
FR>   (Variant any) { ... }
FR>);
FR>


Чет ни фига не понятно очем вы тут...
Сало Украине, Героям Сала
Re[2]: The D Programming Language
От: FR  
Дата: 13.08.10 13:25
Оценка:
Здравствуйте, vpchelko, Вы писали:



FR>>Тут http://www.informit.com/articles/printerfriendly.aspx?p=1609144 одна из глав.


.........

V>Чет ни фига не понятно очем вы тут...


В ссылке выше все объясняется.
А кратко это обработчик сообщений потока, в си это могло бы выглядеть как большой switch, здесь
сделано по подобию паттерн матчинга в функциональных языках.
Re[2]: The D Programming Language
От: x-code  
Дата: 20.08.10 20:47
Оценка:
Здравствуйте, matumba, Вы писали:

M>Если у кого будет электронный вариант, киньте ссылочкой, плиз?


Уже есть, только что скачал. Ищите.
Re[3]: The D Programming Language
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 21.08.10 06:27
Оценка:
Здравствуйте, FR, Вы писали:

T>>А как этот receive работает? Что тут не встроено?

FR>Выбирает сообщения из очереди потока.

А из нескольких очередей может выбирать? Мне в эрланге этого заметно не хватает.
The God is real, unless declared integer.
Re: The D Programming Language
От: Drednout  
Дата: 24.08.10 13:58
Оценка:
Здравствуйте, FR, Вы писали:

FR>Книга Александреску "The D Programming Language" уже около месяца как продается в бумажном виде


Уже в инете свободно можно скачать.
Re: The D Programming Language
От: existen  
Дата: 25.08.10 16:57
Оценка: 20 (2)
Издательство "Символ-плюс" хочет перевести-таки книгу по D. Только пока не знает какую — "Learn Tango with D" или "D programming language". Большая просьба всех неравнодушных высказать свое мнение в этой ветке:
http://symbol.ru/forum/viewtopic.php?f=4&t=363

Сам по какой-то причине залогиниться не могу
Re[3]: The D Programming Language
От: Кодт Россия  
Дата: 26.08.10 08:37
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>Я посмотрел в исходники concurrency.d вся реализация несколько десятков строк, в С++ например сделать это

FR>так просто практически нереально.

Насчёт "практически" не знаю, а насчёт "теоретически" — легко! Даже без 0x.
Берём boost::bind — и напильником его, напильником!
Щас демку напишу...
Перекуём баги на фичи!
Re[7]: The D Programming Language
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.08.10 23:37
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>Понятно что на фоне функциональщины фигня, но на фоне C++ очень даже круто.


На фоне C++ даже C++0X и C++CLI — круто.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: The D Programming Language
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.08.10 23:40
Оценка: :)
Здравствуйте, Кодт, Вы писали:

К>...и напильником его, напильником!


Это как в том анекдоте когда амениканские спиёны стащили чертежи нашей секретной подлодки, но как не бились собирали паровоз, а потом им наш рабочий подсказал, что нужно было в углу читать внимательнее. А в углу было написано "до готовности довести напильником". Да?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: The D Programming Language
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.08.10 23:45
Оценка: +2
Здравствуйте, FR, Вы писали:

M>>Отсутствие вменяемой документации сильно тормозит популяризацию этого чудо-языка.


FR>По моему тут http://www.digitalmars.com/d/2.0/index.html вполне вменяемо.


Не бери в голову. Все кому в лом/не охота/в падлу осваивать и учит что-то новое сразу кивают на отсутствие документации. Это стало стандартной отмазкой.

У Ди есть только два глобальных недостатка — за ним не стоит серьезных денег, и его создание действительно чрезмерно затянулось для столь простого языка.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: The D Programming Language
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.08.10 23:47
Оценка:
Здравствуйте, FR, Вы писали:

FR>Вот последний http://www.digitalmars.com/d/2.0/changelog.html в котором одни багфиксы как бы

FR>подтверждает надежду.

Это какой из них?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: The D Programming Language
От: Кодт Россия  
Дата: 27.08.10 16:52
Оценка:
Здравствуйте, VladD2, Вы писали:

К>>...и напильником его, напильником!


VD>Это как в том анекдоте когда амениканские спиёны стащили чертежи нашей секретной подлодки, но как не бились собирали паровоз, а потом им наш рабочий подсказал, что нужно было в углу читать внимательнее. А в углу было написано "до готовности довести напильником". Да?


Не совсем.
Если коротко, то план такой.

Когда получатели известны прямо здесь и сейчас, достаточно any_cast'а
void dispatch(const any& a)
{
#define BEGIN()        do { if(false)
#define   CASE_NONE()       else if(a.empty())
#define   CASE_TYPE(T)      else if(const T* const v = any_case<T>(&a))
#define   DEFAULT()         else
#define END()          } while(false)

  BEGIN();
    CASE_NONE()               { cout << "none" << endl; }
    CASE_TYPE(int)            { cout << "int " << *v << endl; }
    CASE_TYPE(tuple<int,int>) { cout << "ints " << get<0>(*v) << get<1>(*v) << endl; }
    DEFAULT()                 { cout << "type is " << a.type().name() << endl; }
  END();
}

Когда неизвестны — то
1) вводим тип функции bool(const any*)
2) пишем переходники для трёх наших кейсов
typedef function<bool(const any*)> handler_type;

bool handle_none(const any* a, function<void()> f)
{
  if(!a || a->empty())
    { f(); return true; }
  else return false;
}
bool handle_default(const any* a, function<void(const any&)> f)
{
  f(*a); return true;
}
template<class Signature>
bool handle_args(const any* a, function<Signature> f)
{
  typedef packed_args<Signature>::type Args; // что-то наподобие tuple<...> либо одиночный аргумент
  if(const Args* const args = any_cast<Args>(a))
    { invoke(f,*args); return true; }
  else return false;
}

упаковка-распаковка аргументов в кортежи есть в Boost.Fusion, или руками написать — там работы меньше часа и меньше одного экрана.
3) осталось сбиндить нужные нам обработчики с этими обёртками,
template<class Signature>
handler_type make_handler(function<Signature> f) { return bind(handle_args, _1, f); }

4) и пробежаться по коллекции оных
template<class ListOfHandlers> // list<handler_type> и т.п.
bool dispatch(const any& a, const ListOfHandlers& hs)
{
  return find_if(begin(hs),end(hs), bind(apply<bool>(),_1,&a)) != end(hs);
}
Перекуём баги на фичи!
Re[4]: The D Programming Language
От: FR  
Дата: 01.09.10 07:27
Оценка:
Здравствуйте, VladD2, Вы писали:

FR>>Вот последний http://www.digitalmars.com/d/2.0/changelog.html в котором одни багфиксы как бы

FR>>подтверждает надежду.

VD>Это какой из них?


Последний http://www.digitalmars.com/d/2.0/changelog.html#new2_048
Re: The D Programming Language
От: FR  
Дата: 02.09.10 03:51
Оценка:
Тут

http://www.informit.com/articles/article.aspx?p=1621867
http://www.informit.com/articles/article.aspx?p=1622265
http://www.informit.com/articles/article.aspx?p=1623791

свежее интервью Александреску.
Re[4]: The D Programming Language
От: FR  
Дата: 03.09.10 03:20
Оценка:
Здравствуйте, VladD2, Вы писали:

FR>>Вот последний http://www.digitalmars.com/d/2.0/changelog.html в котором одни багфиксы как бы

FR>>подтверждает надежду.

VD>Это какой из них?


Тут http://www.informit.com/articles/article.aspx?p=1623791 еще лучше:

Andrei: For now, The D Programming Language is the closest thing we have to a specification, and we're really careful to keep the language in sync with the book. Yet of course D is evolving, and hopefully will continue to evolve just like any programming language that people use. However, Walter and I had decided a long time ago that the D book will mark the end of a Cambrian period in the development of the language, which started as D1 and then off-sprung the D2 branch. From here on, we're talking about backwardly compatible changes.


То есть книга практически принимается за спецификацию языка и релиз не за горами (надеюсь ).
Re[5]: The D Programming Language
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.09.10 17:57
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>То есть книга практически принимается за спецификацию языка и релиз не за горами (надеюсь ).


Теп6ерь главное, чтобы не увлеклись каким-нить D 3.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.