Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Андрей Хропов, Вы писали:
WH>>>Это можно достичь только на асме и только очень долго вылизывая код. А порвать С/С++ имея качественную модель ВМ не сложно. АХ>>Зависит от задач. WH>Нет. Не зависит.
Ну давай примеры ВМ которые быстрее С/C++ на большинстве типов задач.
АХ>>Для тех где много мелких хаотично связанных объектов создается — да, GC рулит. АХ>>Для задач где много вычислений (+ грамотно написанных) — вряд ли. WH>У нас есть два ЯВУ. WH>Первый переводится в промежуточное представление где все строго определено. WH>Второй переводится в представление в котором куча скользких мест. WH>Какой ЯВУ оптимизировать легче?
первый, но
1)строгое определение может быть таким, что само по себе затрудняет эффективные реализации (например отказ от value-типов)
2)не позволять человеку соптимизировать руками определенные случаи трудные для автоматического анализа
(пока ИИ не придумали, человек иногда умнее).
АХ>>Хоть Java с HotSpotом и приближается, но WH>А причем тут жаба? Я же оже говорил что ее ВМ плохо подходит для системных вещей. Ее вобще проектировали не для тяжелых вычислений, а для интерпритации мелких управляющих программок.
А что лучше?
АХ>>1) Оверхед по памяти велик, а значит меньше размер задач которые вообще влезают в пямять + менее эффективно используется кэш WH>Для жабы да. Для .НЕТ это уже не совсем верно. А если проектировать систему в расчете на вычисления то там все совсем по другому можно переиграть.
Посмотрим что нам предложат в Fortress.
АХ>>2) Сам HotSpot отъедает ресурсы. WH>По мне так это вобще тупиковая идея.
А что лучше?
Порвать статический анализ под конкретную архитектуру (типа Intel C++) вроде теоретически можно только чем-то вроде HotSpotа, который в динамике отслеживает что и где можно заинлайнить и т.п.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>UB. попробуй
жаль
АХ>Кое-что писал по этому поводу здесь. АХ>Вальтер ответил что посмотрим ближе к 2.0. Но в свете последних фич может и раньше увидим. АХ>Ведь по сути вот эти функции Curry делают те же замыкания руками.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FR, Вы писали:
FR>>Только то что в D это получается не хуже чем в Nemerle, полный аналог твоего кода даже читабельней по моему: WH>А если взять чуть мение игрушечный пример?
Здравствуйте, Андрей Хропов, Вы писали:
FR>>А почему именно на Nеmerle? АХ>Потому что эти языки (D и Nemerle) как мне кажется как раз могут рассматриваться в качестве конкурентов АХ>(ну по крайней мере мне так кажется), поскольку оба статически типизированы, в них есть вывод типов (хотя у Немерле он и значительно мощнее), обладают средствами метапрограммирования АХ>и активно развиваются. АХ>Судя хотя бы вот по этой таблице
(хотя там не все верно, см. комментарии) у них много общих фич.
Мне не кажется что это конкуренты, вообще больше похоже на не пересекающиеся вещи
FR>>Почему не на Наскеле или даже Питоне? АХ>Питон — это динамика. Так что немного из другой оперы. АХ>Хаскель не знаю
FR>>Тоже будет такой же краткий код. АХ>Да вот не такой же краткий (это еще к тому же только 2.5 который недавно вышел):
Нет чуть короче и подойдет любой питон > 2.0
def plus(x, y, z): return x + y + z
def minus(x, y, z): return x - y - z
plus_two = lambda y, z: plus(2, y, z)
print plus_two(6, 8)
plus_three = lambda y: plus_two(3, y)
print plus_three(7)
plus_all = lambda: plus(7,8,9)
print plus_all()
minus_all = lambda: minus(7, 8, 9)
print minus_all()
Здравствуйте, FR, Вы писали:
FR>Ну судя по тому что там паттерн матчинг использован только как замена switch то не вижу почему на D должно получится не сопоставимо.
А ты по второй ссылочке ходил?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FR, Вы писали:
FR>>Ну судя по тому что там паттерн матчинг использован только как замена switch то не вижу почему на D должно получится не сопоставимо. WH>А ты по второй ссылочке ходил?
Изнутри первой, сейчас сходил. Оно конечно да задача для паттерн матчинга, но думаю на текущем D вполне можно написать (проще чем на C++) аналог boost::spirit.
Здравствуйте, eao197, Вы писали:
E>Не нужно путать известность (что и меряет TIOBE) и восстребованность (что показывает список вакансий). E>Тем более, что восстребованность определяет популярность на данный момент.
Судя о TIOBE D почти так же популярен как и Ruby и намного популярнее чем хотя бы Lisp, Fortran и Matlab.
Что очевидно не так, да и на D было бы полно программ (хотя бы написанных энтузиастами).
E>Если по ней судить, то не только D, но и хваленый Nemerle находится в полной ж...
Да, они примерно в одинаковой ж... судя по Google.
Здравствуйте, Андрей Хропов, Вы писали:
E>>Не нужно путать известность (что и меряет TIOBE) и восстребованность (что показывает список вакансий). E>>Тем более, что восстребованность определяет популярность на данный момент. АХ>Судя о TIOBE D почти так же популярен как и Ruby и намного популярнее чем хотя бы Lisp, Fortran и Matlab.
Еще раз: не популярен, а известен. Это разные вещи. Вот, например, какой процент из посетителей RSDN знает про Nemerle (это и есть известность), а какой процент использует (это и есть популярность)?
АХ>Что очевидно не так, да и на D было бы полно программ (хотя бы написанных энтузиастами).
Здравствуйте, eao197, Вы писали:
E>Опытным путем удалось установить, что достаточно прибавлять 0.1, тогда округляет как нужно. Но вот как сделать реверсию я не догнал
О! Что я вижу?! eao197 осваиват передовые технологии.
E>Кстати, именно учет особенности формирования списка и не нравится мне в функциональных решениях со списками. Слишком легко этот момент забыть. Императивный подход именно в данном примере лучше.
Нравится императив? Так применяй соотвествующие структуры данных.
#pragma indent
using System.Console
using System.Math
def makeDistrib(trxCount : int, quantums : int)
mutable r = Collections.Generic.List()
mutable remainingTrx = trxCount
mutable remainingQuantums = quantums
foreach (_ in [1..quantums])
def x = Round((remainingTrx :> double) / remainingQuantums + 0.1) :> int
r.Add(x)
remainingTrx -= x
--remainingQuantums
r
WriteLine(makeDistrib(2, 6).ToString(", "))
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>А с чего ты взял, что это калька с Немерле?
Мне кажется, что Вольфхаунд с тобой полностью солидарен. Он тоже всесто слова "калька" воспользовался более подходящим словосочетанием "жалкое подобие".
E>Имхо, Немерл-овцы сам туплы откуда-то скомуниздили.
Ага. Из клонов ML-я. И сделали это качествнно.
E>Кроме того, имхо, это явно не попытка догнать Немерле
Несомннено! Это попытка украсть лавры у С++... в области удаления гланд через зад.
E> (чо вас на нем так клинт-то, кстати?),
Дык думали заклиниться на Ди, но подумали, что там клиника уже переполнена.
E> а сделать нормально в D то, что в C++ делается с помощью десятиэтажных макросов (памяти Александреску).
Хорошая задача! Остается только сожалеть, что пока, что не ее решить не удалось. Но лиха беда начала. До выхода С++ 0ххх еще время есть.
E>А рантайму, вообще-то говоря, цена не большая. Ты вот на Nemerle сможешь без NET Framework писать?
Да даже без компьютера могу писать. Мне для этого ручки и бумаки хватает!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>По себе людей не судят. Стоит только произнести "немерле" как ты сразу начинаешь исходить ядом... к чему бы это?
А мне кажется, что eao197 симпатизирует Немерлу. Что не таема им созданная, так обязательно сводится к вопросу "а почему не Немерле?".
Это как со стихами о вине? Знаешь какое стихотворение посвящено белому вину? "О, белое вино... Почему ты не красное?".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Тогда зачем было говорить по превращении D в подобие Немерле?
Боже упоси! Какое пдобие?! Вольфхаунд сказал "жалкое подобчие". В русском языке это словосочетание означает, что сходство хотя и есть, но очень незначительное.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>(На возражение что D слизало готовое, Немерле тоже самое сделало с ML языков).
Ага. Причем ML — это язык постоенный на четких научных принципах. Передирание из него тоже делается знающими людьми и на высоком техническом уровне. А вот Ди явно делается на уровне С++. Результат конечно может превзайти С++, но вряд ли очень сильно.
Так что пусть он конечно будет. Это будет как минимум хорошим упреком Страуструпу. Но хватсаться его убогими фичами явно не стоит. Иначе все время будете получать в пример языки в которых тоже самое и намного больше реализовано куда лучше и уже работает. И снова будете злиться и кричать "а причем тут Немерле?".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > E>А с чего ты взял, что это калька с Немерле? > Мне кажется, что Вольфхаунд с тобой полностью солидарен. Он тоже всесто > слова "калька" воспользовался более подходящим словосочетанием "жалкое > подобие".
Нет, это Немерль — жалкое подобие D. Поделка студентов. Даже без .NET
Framework/Mono работать не умеет. Фигня, короче.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FR, Вы писали:
FR>>(На возражение что D слизало готовое, Немерле тоже самое сделало с ML языков). WH>В немерле совершенно иной вывод типов не имеющий ничего общего в ML.
Алгоримт иной. Но:
1. ФР явно не о нем говорит. В этой ветке ведь кортежами хвастались.
2. МЛ был реальным прототипом. И разработчики Немерла не мало оглядывались на него. Насколько я понял первая версия Немерла была написана на ОКамле.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>А чё бы не поглумиться нед теми кто прославляет убогсть только потому, что она чуть мнее убогая чем старая убогсть?
- Писсант - это такой тип, который воображает, будто он умнее
всех, и потому никогда не промолчит. Чтобы другие ни говорили,
писсанту всегда надо спорить. Вы скажете, что вам что-то
нравится, и, клянусь богом, он тут же начнет вам доказывать, что
вы не правы и это вам нравиться не должно. При таком писсанте вы
чувствуете себя окончательным болваном. Что бы вы ни сказали, он
все знает лучше вас.
(Курт Воннегут, "Колыбель для кошки")
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.