Re[16]: Ой, чо с D деется-то!?
От: kedik  
Дата: 20.11.06 09:05
Оценка: :))) :))) :)
Здравствуйте, VladD2, Вы писали:

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


VladD2,
я Вам искренне завидую... обладай я хоть камплей Ваших способностей, я бы уже давно забросил бы к черту весь этот комьютерный хлам... и ушел бы торговать на бирже... а через несколько лет мирно жил бы на пенсии и просто наслаждался жизнью
Re[22]: Ой, чо с D деется-то!?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.11.06 09:08
Оценка:
Здравствуйте, FR, Вы писали:

AF>>Ничего. Транслятор скрипта и компилятор языка с выводом типов, паттерн матчингом и синтаксическими расширениями — сложность этих задач отличается на порядок, если не на два.


FR>И что? Конечно компилятор сложнее, но это абсолютно не доказывает "жизнеспособность языка". Эта вещь доказывается только практикой.


+1
Более того, разные версии Modula и Oberon, если не ошибаюсь, изначально сами себя компилировали. Насколько им это помогло?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[23]: Ой, чо с D деется-то!?
От: FR  
Дата: 20.11.06 09:15
Оценка:
Здравствуйте, AndreiF, Вы писали:

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


FR>>И что? Конечно компилятор сложнее, но это абсолютно не доказывает "жизнеспособность языка". Эта вещь доказывается только практикой.


AF>Точно, только практикой. Каков примерно объем всего кода на D, о котором тебе известно?


Мало, можешь сам вот тут подсчитать http://dsource.org/projects/
Но на D уже есть выпущенные коммерческме продукты. (например тот же DMDScript) http://www.digitalmars.com/dscript/buy.html.
Вообще ты зря затеваешь это меряние пипи, и D и N пока представляют собой исчезающе малые величины.
Re[23]: Ой, чо с D деется-то!?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.11.06 09:16
Оценка:
Здравствуйте, AndreiF, Вы писали:

AF>Точно, только практикой. Каков примерно объем всего кода на D, о котором тебе известно?


Например, библиотека Mango -- это почти 2Mb d-кода (больше 63K строк).
В стандартной библиотеке D phobos уже 60K строк.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[24]: Ой, чо с D деется-то!?
От: AndreiF  
Дата: 20.11.06 09:18
Оценка:
Здравствуйте, FR, Вы писали:

FR>Вообще ты зря затеваешь это меряние пипи, и D и N пока представляют собой исчезающе малые величины.


Не забываем только о сравнительном времени жизни этих языков.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Ой, чо с D деется-то!?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.11.06 09:22
Оценка:
Здравствуйте, ie, Вы писали:

ie>Прошу:


ie>
ie>#pragma indent

ie>using System.Console
ie>using System.Math

ie>def makeDistrib(trxCount : int, quantums : int)
ie>    mutable r : list[int] = []
ie>    mutable remainingTrx = trxCount
ie>    mutable remainingQuantums = quantums
ie>    foreach (_i in [1..quantums])
ie>        r ::= Round(remainingTrx / (remainingQuantums :> double)) :> int
ie>        remainingTrx -= r.Head
ie>        --remainingQuantums
ie>    r

ie>def r = makeDistrib(2, 6)
ie>WriteLine($"$r")
ie>


Кстати, оказалось, что и на D можно было версию с foreach сделать:
import std.math;
import std.stdio;

int[] makeDistrib( int trxCount, int quantums )
  {
    auto r = new int[ quantums ];
    foreach( inout c; r )
      {
        c = cast(int)std.math.round(
            cast(float)trxCount / quantums );
        trxCount -= c;
        --quantums;
      }

    return r;
  }

void main()
  {
    int[] d = makeDistrib( 2, 6 );
    writefln( d );
  }


Я просто упустил изначально из виду, что у динамических массивов в D известна их длина и поэтому их можно скармливать foreach-у.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[18]: Ой, чо с D деется-то!?
От: Андрей Хропов Россия  
Дата: 20.11.06 10:01
Оценка: 4 (1)
Здравствуйте, FR, Вы писали:

FR>Реально у D до последних релизов были слабые места по сравнению с C++. Сейчас уже нет.


Вот мой список:

1. Слабые места по сравнению с C++:

  1. отсутствие полноценной поддержки const по-сравнению с C++ (const методы, const указатели)[/*]
  2. отсутствие возможности перегружать оператор присваивания или аналогичный механизм, который бы позволил реализовать подсчет ссылок[/*]
  3. отсутствие возможности возвращать ссылки из функций
    (поэтому my_class["name"] += 1 не получится)[/*]
  4. отсутствие возможности перегружать оператор присваивания не позволяет нормально реализовать механизм expression templates, что очень плохо для вычислительных программ[/*]

2. Другие слабые места:

  1. медленный консервативный GC (для точного нужно по всей вероятности корректировать дизайн)[/*]
  2. отсутствие полноценных замыканий, но при этом возвращать делегаты из функций не запрещено, что приводит к UB![/*]
  3. неполноценная поддержка рефлексии[/*]
  4. отсутствие генераторов (как сейчас реализуется foreach несколько менее удобно и я подозреваю сложнее оптимизировать)[/*]
  5. семантика использования миксинов до конца не проработана (я их не очень изучал но судя по форуму там много вопросов)[/*]

Все ИМХО.

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


Мне компилятор кажется достаточно стабильным, если не пользоваться новыми навороченными фичами вроде variadic templates.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Ой, чо с D деется-то!?
От: prVovik Россия  
Дата: 20.11.06 11:27
Оценка: :)))
Здравствуйте, VladD2, Вы писали:

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


Хе хе.. Опытный форумный боец сразу чувствуется по заранее подготовленным маршрутам отступления
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
лэт ми спик фром май харт
Re[8]: Ой, чо с D деется-то!?
От: prVovik Россия  
Дата: 20.11.06 11:46
Оценка: :))
Здравствуйте, VladD2, Вы писали:

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


C>>Нет, это Немерль — жалкое подобие D. Поделка студентов. Даже без .NET

C>>Framework/Mono работать не умеет. Фигня, короче.

VD>И что забавно я даже спорить с тобой не буду.


черт!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
лэт ми спик фром май харт
Re[17]: Ой, чо с D деется-то!?
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.06 15:50
Оценка:
Здравствуйте, prVovik, Вы писали:

V>Хе хе.. Опытный форумный боец сразу чувствуется по заранее подготовленным маршрутам отступления


Нет никаких отсуплений. Я реалист. И говорю о том, что четко могу предсказать путем банальной интерполяции известных мне фактов. Ну, а то что для многих мои выводы не очевидны — это их проблемы, а не мои. Я много раз наблюдал как такие умники отказывались от своих слов по прошествию времени. Поверь мне, что в 1993-1994 году слова про то что Новел окажется в заднице и его рынок уйдет МС вызвали такой же скепсис как эти сейчас. Ну, и где эти скептики?

Ежу понятно, что я могу ошибаться. Любой предсказание не может быть на 100% точным. Ну, да поживем увидим.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Ой, чо с D деется-то!?
От: prVovik Россия  
Дата: 20.11.06 16:37
Оценка:
Здравствуйте, VladD2, Вы писали:


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


А можно подробнее про "интерполяцию фактов" применительно к тому, что именно заставит Microsoft заменить свой теперешний флагман C# на немерле.
лэт ми спик фром май харт
Re[18]: Ой, чо с D деется-то!?
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.06 23:12
Оценка: -1
Здравствуйте, FR, Вы писали:

FR>Реально у D до последних релизов были слабые места по сравнению с C++. Сейчас уже нет. Но пока не выйдет стабильный релиз перспектив у него на самом деле не будет.


Ага. Когда выйдет рилиз придумаешь что-нить другое.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Ой, чо с D деется-то!?
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.06 23:12
Оценка:
Здравствуйте, prVovik, Вы писали:

V>А можно подробнее про "интерполяцию фактов" применительно к тому, что именно заставит Microsoft заменить свой теперешний флагман C# на немерле.


Этой теме? Здесь народ по злословить собрался и посмеяться друг над другом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Ой, чо с D деется-то!?
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.06 23:12
Оценка: -1
Здравствуйте, AndreiF, Вы писали:

FR>>

FR>>Why aren't all Digital Mars programs translated to D?

FR>>There is little benefit to translating a complex, debugged, working application from one language to another. But new Digital Mars apps are implemented in D.


AF>Замечательные слова! Вот это — очень хорошее объяснение, почему D и дальше не будет никем использоваться.


Долго думал согласиться с этими словами или нет. Но понял, что в общем-то согласен. И знаешь почему? Во все не потому, что считаю что переписывание имещихся пириложений на Ди является обязательным ритуалом доказательства его работоспособности. Дело в другом. Дело в том, что успех языка в не малой степени зависит от того насколько его легко развивать. Уж простят меня боги за очердное упоминание Немерле в суе, но во многом качество Неперле определяется тем, что он был переписан на самом себе и развивается на самом себе. Это дает комулятивный эффект. Любое увеличение мощьности языка и урошение его использования приводит к упрощенияю дальнейшего развития языка. Язык сам себя раскручивает.

Таким образом можно сказать, что ответ является лживым. Ответ как бы ставит нас перед фактом, что есть готовое приложение (компилятор Ди) и его не разумно переписывать на другом (пусть даже более мощьном) языка. Если бы дела обстаяли так, то я был бы полностью согласен с автором ответа. Но компилятор Ди не является законченным приложением. И решение развивать его на С++ говорит об одном из двух фактов. Или все же Ди не дает существенной разницы по сравнению с С++, или его авторы мягко говоря не дальновидны. Оба факта не в пользу Ди.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Ой, чо с D деется-то!?
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.06 23:12
Оценка:
Здравствуйте, FR, Вы писали:

FR>У величайшего из языков современности и этого нет.


Да, на русском матерном RTL не напишешь. Но, черт побери, это не делает его менее великим!!!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Ой, чо с D деется-то!?
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.06 23:12
Оценка: :)
Здравствуйте, AndreiF, Вы писали:

AF>Ничего. Транслятор скрипта и компилятор языка с выводом типов, паттерн матчингом и синтаксическими расширениями — сложность этих задач отличается на порядок, если не на два.


Ты в этом пыташся убедить поклонника Питона?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Ой, чо с D деется-то!?
От: AndreiF  
Дата: 21.11.06 05:12
Оценка:
Здравствуйте, eao197, Вы писали:

E>Например, библиотека Mango -- это почти 2Mb d-кода (больше 63K строк).

E>В стандартной библиотеке D phobos уже 60K строк.

И это — за добрых семь-восемь лет с тех пор, как появился D.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[25]: Ой, чо с D деется-то!?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.11.06 06:30
Оценка: +2
Здравствуйте, AndreiF, Вы писали:

E>>Например, библиотека Mango -- это почти 2Mb d-кода (больше 63K строк).

E>>В стандартной библиотеке D phobos уже 60K строк.

AF>И это — за добрых семь-восемь лет с тех пор, как появился D.


Во-первых, за 4-ре года с момента выхода первой доступной версии (28 сентября 2002).
Во-вторых, это только два проекта из тех, что были у меня под рукой. Но на dsource.org есть еще штук надцать только OpenSource-проектов.
В-третьих, D очень сильно изменялся за эти годы, поэтому он был для части разработчиков (в том числе и для меня) не самой подходящей площадкой для работы (именно для работы, а не для программирования ради исскуства). Не было никакого желания делать что-то серьезное, зная что через полгода половину из написанного нужно будет переписывать. Но сейчас, в связи с грядущей стабилизацией ситуация сильно меняется в лучшую сторону.
В-четвертых, DMD официально поддерживает только Windows и Linux, но для некоторых проектов этого мало. Поэтому еще один всплеск интереса к D произойдет после выхода версии 1.0, когда ее начнет поддерживать порт GDC на других Unix-ах.

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Кстати о хвостовой рекурсии...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.11.06 12:26
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>
WH>def makeDistrib(trxCount : int, quantums : int)
WH>{
WH>| (_, 0) => []
WH>| (remainingTrx, remainingQuantums) =>
WH>    def r = (remainingTrx :> double) / remainingQuantums;
WH>    def r = Round(r, MidpointRounding.AwayFromZero) :> int;
WH>    r :: makeDistrib(remainingTrx - r, remainingQuantums - 1);
WH>}
WH>def r = makeDistrib(2, 6);
WH>WriteLine($"$r");
WH>

WH>Просто если уж начал писать на функциональном языке так пиши в функциональном стиле.

Мне кажется, что данная реализация makeDistrib не позволяет языку выполнить рескрутку хвостовой рекурсии -- здесь обычная рекурсия за счет того, что r нужно сохранять в стеке до возврата из следующих makeDistrib.

Для того, чтобы раскрутка хвостовой рекурсии действительно выполнялась, необходимо текущий список передавать аргументом. Вот как-то так (Scala):
object BufferizatorDistrib5
  {
    def makeDist( trxCount: int, quantums: int ) : List[ int ] = {
      def distrib( trxCount: int, quantums: int, result: List[ int ] ) : List[ int ] = {
        if( quantums >= 1 )
          {
            val r = Math.round(trxCount.toFloat / quantums)
            distrib( trxCount - r, quantums - 1, r :: result )
          }
        else
          result
      }

      distrib( trxCount, quantums, Nil ).reverse
    }

    def main( args: Array[ String ] ) =
      {
        System.out.print( makeDist( 2000, 60000 ) )
      }
  }


Похоже, что я прав, поскольку при quantums == 60000 программа на Nemerle ломается. Но вот в таком виде работает:
using System;
using System.Console;
using System.Math;

def makeDistrib(trxCount : int, quantums : int)
{
  def distrib( trxCount: int, quantums: int, result ) {
    | (_, 0, _) => result
    | (remainingTrx, remainingQuantums, result) =>
      def r = (remainingTrx :> double) / remainingQuantums;
      def r = Round(r, MidpointRounding.AwayFromZero) :> int;
      distrib(remainingTrx - r, remainingQuantums - 1, r :: result );
  }
  distrib( trxCount, quantums, [] )
}

def r = makeDistrib(2000, 60000);
WriteLine($"$r");


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[15]: Ой, чо с D деется-то!?
От: ie Россия http://ziez.blogspot.com/
Дата: 26.11.06 17:23
Оценка:
Здравствуйте, ie, Вы писали:

ie>А кстати! J, дайте J!!


Как-то не особо гламурно получилось

r =. [:<.0.5+({.%}.) .NB round(trxCount/trxCount)
md =. ([:|.6{.|.)@([:#:{:@(+(-@r@(2&{.),_1,(2^([:<:1&{))*r@(2&{.))^:(1&{)))@(,&0)
md 2 6 .NB вернет [0 0 1 0 1 0]
... << RSDN@Home 1.2.0 alpha rev. 655>>
Превратим окружающую нас среду в воскресенье.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.