Здравствуйте, Слоноежик, Вы писали:
J>>Каким будет результат компиляции в этом случае? Или программист сам себе злой буратино, если написал такое? Если так, то чем это "лучше" С>Не скомпилируется.
Так вот как раз интересно узнать как они это сделали? Нельзя вызывать функции из внешних модулей в compile-time?
Здравствуйте, Disappear, Вы писали:
VD>>Ды ты вот на свои рассуждения погляди. Ты спрашиваеш у людей почему бы в место устаревшего 10 лет назад языка не использовать новый который чуть лучше чем предыдущий. Но даже не задумываешся над тем, что он так же морально устарел.
D>Я не считаю, что если язык является static typed и native compiled, то его можно считать морально устаревшим. D>Есть разные идеологии, и разные подходы. Для разработки ПО мирового масштаба по прежнему используются native языки.
Здравствуйте, Disappear, Вы писали:
VD>>Ды ты вот на свои рассуждения погляди. Ты спрашиваеш у людей почему бы в место устаревшего 10 лет назад языка не использовать новый который чуть лучше чем предыдущий. Но даже не задумываешся над тем, что он так же морально устарел.
D>Я не считаю, что если язык является static typed и native compiled, то его можно считать морально устаревшим.
А я где-то такое говорил? Тебе явно померещилось.
D>Есть разные идеологии, и разные подходы. Для разработки ПО мирового масштаба по прежнему используются native языки.
Я не знаю что такое "разработка ПО мирового масштаба". Для разработки же просто ПО используются разные языки. И С++ несомненно удерживает второе место после Явы по массовости использвания.
Только я вот понять не могу, а что ты так удивляешся в том, что люди не принимают какой-то там Ди? Пойми в их догматах ПО пишут в основном на С++. А какой-то там Ди — это такая малпонятная игрушка от которой не ясно что и ждать то.
В общем, ты прекрасная демонстрация того почему твои опоненты никогда тебы непоймут. Вы просто не умеете воспринимать вещи адекватно. Вы живете своими догмами.
Все отличие тебя от них в том, что ты немного задумался над тем, что происходит. Но как только тебе попробовали показать "как глубока эта заячья нора" ты сразу же решил, что лучше зашорить глаза и оставаться жить в своем мире.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Disappear, Вы писали:
D>Я ничего не имею против Nemerle. Просто речь то шла о конкуренте C++ — статически типизируемом языке со статической компиляцией.
Ну, и чем же Nemerle тут не подходит?
D>Вот и спрашивается — причем тут Nemerle.
Дык это как раз статически тпизированный язык со статической компиляцией (что в общем-то бред, так как компиляция она и Африке компиляция).
Что касается конкуренов С++, то для меня это само по себе смешно. С++ маральный урод. Он устарел еще 10 лет назад. Его испоьзуют не потому что он лучий, а потому, что к нему привыкли и потому что вокруг него море фобий. Конкуренты ему попросту не нужны.
Если нужен другой язык. Не конкурент С++, а язык его заменяющий. То определись что ты хочешь от этого языка. Вот когда я сформулировал свои требования, то оказалось, что ближе всего к их воплощению подошел именно Nemerle. А Ди это всего лишь клон С++ развивающий его неверные решения.
Можно зайти и с другой стороны и подумать о том, что не нравится в С++. Сформулирвоать требования от противного, тык-сызыть.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Mirrorer, Вы писали:
M>Ну как бы у него статическая типизация и статическая компиляция имеется. В чем отличие от плюсов — принудительный GC и компиляция в байт-код.
Я бы сказал, что байт-код тоже не существеннен. В итоге ведь все равно имеем нэйтив-код.
А вот что их действительно отличает — это наличиеразвитого рантайма. Это значит наличие GC, рефлексии, динамической компиляци, защиты. Вот только в моем разуме это все приемущества, а не недостатки.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>>Ну, вот и подумай насколько это глупый код! VD>>Ты не сможешь его вызвать из программы. Он доступен только во время компиляции. VD>>Я же свой код могу вызвать как во время компиляции, так и во время исполненения. VD>>Это будет один и тот же код. Более того, он будет скомпилированным! И выполнится очень быстро. VD>>Твой же код будет интерпретироваться компилятором. Конечно factorial-а это не проблема. Но мы же говорим не о нем?
D>Не понял что подразумевается под словом "использовать"?
Извини, я не нашел в своих словах этого слова.
D>Так что статические вычисления вообще получается не нужны? Путь в рантайме все считается.
Это из серии "угадал все буквы — не смог прочесть слово".
Прочти еще раз то что я написал. Я понимаю, что сложно сломать свое мышление и взглянуть на проблему с другой стороны, но ты не поймешь что я сказал пока не попыташся это сделать.
Еще раз попробую разживать свои слова.
Итак, что делаешь ты? Ты пишешь код используя разные выкрутасы Ди, чтобы можно было выполнить этот код во время компиляции. При этом ты уже не сможешь использовать этот же код во время выполнения, так как он использует разные статические конструкции (вроде static if).
Я же пишу код не используя никаую ахинею вроде "static if". Я просто пишу код и компилирую его в бинарный модуль. После этого я имею возможность как выполнить этот код в рантайме, так и во время компиляции! По сути я прост заставляю компилятор вызвать мою библиотеку! Твои static if будут интерпретироваться компилятором, в то время как мой код будет скомпилирован в нэйтив, а значит не будет интерпретироваться. Так что я получаю скорость и гибкость.
D>Опять Немерле.
А ты думал?! Ты даже не понимаешь на сколько D убог по сравнению с ним. Это как сравнивать потифон с современным звуковой HI-Fi-системой.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Disappear, Вы писали:
D>Хороший подход, мне нравится. В D какраз нечто-подобное используется.
Не. В D ты вынужден использовать специальный интерпретируемый подязык чтобы выразить вычисления времени компиляции. Это далеко не тот же язык. Поробуй, например, с его помощью загрузить что-то из внешнего файла (или записать что-то во внешний файл). У меня это получится очень прость.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Что не выходит?
VD>>В обличии от D или C++ мы вольны произвести в макросе вычисления любой сложности. Так если у нас уже есть нужная функция которую нужно вычислить во время компиляции, то мы просто вызваем ее в макросе и получаем требуемый результатм. VD>>То есть для нас нет разницы между кодом программы и метакодом. В D же и в С++ мы вынждены писать метакод на птичьех языках которые сильно отличаются от того языка что мы вынуждены применять в реальной программе. С>Ну D это уже не относится.
Еще как отностися. Метакод в D пишется не на базовом D, а на статических расширениях.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, deniok, Вы писали:
J>>P.S. Вопрос относится не только к D, это скорее вопрос ко всем адептам compile-time вычислений. Если средства в современных языках, помогающие разруливать описанные ситуации? Если есть, то как?
D>В Хаскелле эта проблема решена радикально — там все функции чистые, то есть в твоей терминологии детерминированные. Поэтому в TemplateHaskell таких проблем при квазицитировании не возникает.
В Хаскеле есть монада IO с помощью которой все что хочешь сделать можно (любой побочный эффект). Но причем тут Хасель? Темболее причем тут ТемплэйтХаскель? В нем как раз применен подход аналогичный Немерлевому. Можно даже сазать, что Немерле равивает этот подход.
ЗЫ
А вообще, язык не позволяющий вызват функцию random — это само по себе было бы смешно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Disappear, Вы писали:
D>Есть разные идеологии, и разные подходы. Для разработки ПО мирового масштаба по прежнему используются native языки.
А что такое ПО мирового масштаба, кто его делает и почему там используют native языки?
Здравствуйте, Слоноежик, Вы писали:
J>>Здравствуйте, Слоноежик, Вы писали: J>>Интересно-интересно. А способен eval отличить недетермирированные функции от детерминированных? Если нет — то это полная ж... С>Относительно D cмотреть здесь
Такое можно сделать на немерле раз и навсегда написанным макросом.
Вот только кому нужно решение с такими драконовскими ограничениями как в D?
Правильно тем кто ничего лучше не видел.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, fmiracle, Вы писали:
F>Здравствуйте, Disappear, Вы писали:
D>>Есть разные идеологии, и разные подходы. Для разработки ПО мирового масштаба по прежнему используются native языки.
F>А что такое ПО мирового масштаба, кто его делает и почему там используют native языки?
F>Похоже, это уже даже не софт для АЭС...
И даже не CRM система для нового склада памперсов...
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Disappear, Вы писали:
[..skipped..] VD>Все отличие тебя от них в том, что ты немного задумался над тем, что происходит. Но как только тебе попробовали показать "как глубока эта заячья нора" ты сразу же решил, что лучше зашорить глаза и оставаться жить в своем мире.
Почему вы так часто переходите на личности? Этот и другие языке мне интересны чисто из академических интересов. Для работы, по прежнему нет ничего лучше старых добрых инструментов — это дело привычки.
Речь шла, о возможности постепенного перехода к использованию других инструментов. И что бы дала эта возможность.
По сути дела, то что было высказано в этой ветке, могло бы нести обьективный характер — за и против. Но, как оказалось, многие не считают, что можно обсуждать такие темы, потомучто в массах преобладает "эффект блаба", народная истерия, костность дедушкиной бороды или что еще там...
Быть может, люди не такие тупые, как Вы о них думаете? И даже С++ программисты.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Disappear, Вы писали:
D>>Я ничего не имею против Nemerle. Просто речь то шла о конкуренте C++ — статически типизируемом языке со статической компиляцией.
VD>Ну, и чем же Nemerle тут не подходит?
D>>Вот и спрашивается — причем тут Nemerle.
VD>Дык это как раз статически тпизированный язык со статической компиляцией (что в общем-то бред, так как компиляция она и Африке компиляция).
VD>Что касается конкуренов С++, то для меня это само по себе смешно. С++ маральный урод. Он устарел еще 10 лет назад. Его испоьзуют не потому что он лучий, а потому, что к нему привыкли и потому что вокруг него море фобий. Конкуренты ему попросту не нужны.
VD>Если нужен другой язык. Не конкурент С++, а язык его заменяющий. То определись что ты хочешь от этого языка. Вот когда я сформулировал свои требования, то оказалось, что ближе всего к их воплощению подошел именно Nemerle. А Ди это всего лишь клон С++ развивающий его неверные решения.
VD>Можно зайти и с другой стороны и подумать о том, что не нравится в С++. Сформулирвоать требования от противного, тык-сызыть.
Сейчас я понял, что считаю неверными решениями все ваши утверждения по поводу языков.
На основе этого можно сформулировать список требований
Здравствуйте, jedi, Вы писали:
J>Так вот как раз интересно узнать как они это сделали? Нельзя вызывать функции из внешних модулей в compile-time?
Ага. Фактически Ди позволяет делать только две вещи. Описывать код который использует явные операции времени компиляции (const, static if и т.п.), а так же позволяет сам вычислить некоторые функции которые могут быть вычеслены в процессе свертки констант (то есть все входные данные которых константны). Фактически воторое это продвинутый констант-фолдинг. Даже в С можно было написать:
int x = 3 * 4 + 2;
и это подсчитается в компайл-тайме. В Ди это правило расширили позволив сворачивать выражения с простыми функциями.
Однако полезность от этого сильно не вырастает. В метакоде как раз нужно иметь возможность произвольных вычислений. А этого как раз нет.
Недавно в Ди пытались ввести "строковые макросы". Это небольшой шаг вперед. Но шаг дико кривой и не полноценный. Если они пойдут по првильному пути то где-то через год-другой (гы-гы) они дойдут до квази-цитирования и полноценных макросов. Хотя не факт что дойдут.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, minorlogic, Вы писали:
M>Я пытался найти реальные недостатки МН, но к сожалению не смог. Единственный недостаток о котором я слышал это передваваемое из уст в уста легенда о недостатках МН . Пожалуйста подскажите мне , где я могу почитать об этом ?
Здравствуйте, Дм.Григорьев, Вы писали:
ДГ>И какая часть из них — открытая? Точнее, больше интересует бесплатность для разработчика, в т.ч. проприетарного софта (ибо на дядю работаю).
Бесплатны, т.е. не требуют каких либо отичислений, все перечисленные библиотеки.
Открыты, в смысле имеют ОпенСорс-реализацию, пока только #GTK и MS Forms (в Моно). Причем MS Forms реализована не полностью. Есть планы по реализации (в Моно) WPF.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.