Здравствуйте, VladD2, Вы писали:
VD>Я бы так сказал, они как и C# хреново функциональные. То есть писать на них в функциональном стиле моно, но зачастую это менее удобно чем в императивном.
За счет того что в них функции первоклассные писать в функциональном стиле гораздо удобней чем в шарпе.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Того что выделено не достаточно. Я тоже когда смотрел придерживался практически такого же мнения о динамике как ты сейчас.
VD>Цитирую, как говорится, классиков . VD>
Я вот не мало в свое мремя пописал на разных динамических языках.
Между тем же VB и питоном с руби разница не меньше чем между фортраном и шарпом
Поэтому и интересно на каком именно динамическом языке ты много писал.
FR>> eao197 тоже помнится говорил здесь об этом же. А насчет пописал на разных динамических языках можешь сказать на каких именно и примерный объем кода.
VD>Ребытя. Будьте чесны сами с собой. Вы выбрали Руби и Питон, не потому, что они динамические. А потому что они значитально удобнее чем кайо-нибудь С++ используемый вами до этого как основной язык. Но уже с C# перейти (даже) на Руби очень тяжело. А с какого-нибудь эээ, ну скажем Скалы, чтобы не раздражать население , вообще невозможно, так как серьезно теряещь в функциональности.
Люблю твои выводы читать
Тебе надо серъезно задуматся о карьере писателя — фантаста
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Конечно может быть и так как ты описываешь, если вызывающий код сам явно проверяет проверяет типизацию. Но для динамики гораздо полезнее думать в терминах сообщений,
VD>Стоп, стоп, стоп. Думать ты можешь как хочешь. Вообще в программировании зачастую думать о сущьностях лучше не в терминах реализации, а в терминах более абстрактных. Например, те же замыкания можно воспринимать как кросивю магию, а можно как генерацию классов или редукцию графов.
Ты как раз и думаешь больше в терминах реализации.
VD>Но мы же говорим о производительсности в данном случае? А раз так, то мы дожны говорить о реализации. И тут все печально. Все замечательные разговоры об оптимизациях умных рантаймов таят как только вот такие вот умники распираемые от крутости своего динамического языка пихают в список элементы разного типа и начинают "пользоваться динамикой". Это моментально приводит к кончине как производительности так и надежности.
Мы говорили про приведения типов, и твое описание подобное описанию например C++ классов глазами ассемблерщика, но ты перескочил на производительность.
FR>>А джит компиляторы это уже успешно делали до того как вообще менеджед языки со статической типизацией появились.
VD>Не, не, не. Никаких JIT-компиляторов если вы хотите динамики. Джиты живут до той поры пока ваша динамика является по сути статикой. Джиту нужна статическая информация о типах. Ситуацию спасает то, что джит максимально приближен к времени выполнения и может получать информацию о типах на поздних стадиях. Но она ему нужна как воздух. Без нее JIT будет вставлять код интерпретатора в прямо в тела методов.
Есть и другие методики, в обсуждениях смаллтока их не раз перетирали, а тебя похоже заклинило на одной конкретной реализации jit'а и все остальное ты видишь только преломленным через это свое понимание.
Здравствуйте, VladD2, Вы писали:
E>>Ok. Но более точно будет сказать так: "Мне тяжело писать exception safety код, вне зависимости от языка, на котором это делается".
VD>ОК, меня это устраивает. Со своей стороны скажу, что "Мне легко писать код так кая я умею пользоваться исключениями.".
Совсем маленькое дополнение: я написал "мне тяжело писать exception safe код", а ты говоришь о просто коде ("мне легко писать код"). Небезопасный по отношению к исключениям код и я пишу без проблем. А ты попробуй безопасный написать.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
E>>Историческая справка: Ruby я начал использовать в задаче, где любой компилируемый язык отдыхает именно потому, что он компилируемый.
VD>Помню, помню. Было срочно нужно написать свой мэйк.
Да. И не жалею. И не я один.
E>> И продолжаю его использовать именно из-за динамики.
VD>Меня то зачем зомбировать?
Нужно мне это, как же.
Просто ты ошибочно полагаешь, что компилируемые языки во всех областях могут заменить динамически типизированные.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, pavel74, Вы писали:
VD>>Гибкость можно достичь и при тотальном контрле компилятора. Просто это сложнее сделать. Но будующее за сложным изнутри и простым с наружи. P>О — тоже верно! "Просто это сложнее сделать" — дык часто бывает надо не сложнее а быстрее, а скорости работы результата более чем хватает.
Не надо извращать моис лова. "Просто это сложнее сделать" относится к разработке языка, а не к его применению.
VD>>Что до IDE, то раз уж динамические языки так круты, и так круты те кто их использует, то почему на них нельзя было давно создать охринительную IDE затмевающую жалкие поделки от МС и ДжетБрэйн?
P>Влад, ну чего ты заладил "так круты"
Да потому что это крутость уже из всех дыр. Много слов о том что динамически языки лучше, но большая часть софта пишется не на них, а банальное сравнение объемов кода показвает, что эти самые крутые динамически в дрызг проигрывают новым статическим языкам.
P> , никто и неговорит что супер-круты и круче токо горы, нету "серебрянной" пули.
Дык как раз говорят. И я уж даже сам начал верить. Но вот копнул... и все не так гладно. Точно совсем печально.
P> Есть в "динамике" своя привлекательность, ты это сам даже признал, несколькими постами выше.
Я и не отказываюсь от этого. Да, есть плюсы. Но они же пораждают минусы. А главное, что есть факторы независящие от того динамический язык или нет. Вот паттерн-матчинг, например. Он есть в статическом, но компонентном Немерле, в динамическом Эрланге и в статическом и совсем не компонентном ОКамле. И веще он неизменно дает отличный резуальтат с точки зарения выразительности. И лично я оцениваю этот фактор более высоко нежели некоторые динамические феньки. Ведь паттерн-матчинг не дает подбных эффектов вроде проблем с производительностью или необходимости тотального юнит-тестирования.
P> Smalltalk я бы сказал вообще стоит особняком от других динамическиз языков, да это и не только язык а целый взгляд на разработку, можно сказать что в нем другой подход к разработке, а именно про то что в нем интерактивный, инкрементальный принцип построения приложения малыми кусочками с активным применением TDD и принципов экстремального программирования, в отличии от традиционного подхода write-complie-debug.
Мне кажется это выдуманное дистанцирование. Любой хороший Питонец или Рубиец может рассказать тебе тоже самое. А самое смешное, что хороший C#-повец тоже. TDD вопрос спорный. Для динамики — это костыль. А для статики полезное дополнение.
P> Лично мне такой принцип разработки (еще раз — интеактивное инкрементальное построение программы мальнькими кусочками) очень нравиться.
Не поверишь, но мне тоже. Так что у нас много общего. Только в одном мы расхдится. Ты считашь, что он хорош только для Смолтока, а я использую его везде. Вот на С++ это было очень неудобно, правда. Ну, да мир его праху, как говорится.
P> Возможно что ради него Smalltalk и проектировался, динамичечская типизация использована чтобы решить данную задачу.
И как же она решает эту задачу? И почему же эта задача неплохо решается и в C#?
Все мои програмы написанные на C# писались именно так. Маленькими инкреминтальными шажками с постоянном тестированием (но чаще без юнит-тестов).
P> Не замечал к примеру такую особенность — что часто делаются навороченные фраймворки, а потом большая часть прикладного функционала реализуется за счет всяких XML конфигов и настроек (естественно без контроля компилятора).
Разное бывает. Бывает как ты говоришь, а бывает что XML применяется с котролем по схеме (или еще как) и очень по месту.
VD>>В прочем для меня это вопрос риторический я то точно знаю почему. P>И почему же?
Потому что в реалии все по другому. И динамические языки откровенно не лучший выбор в больших и сложных проектах требующих высокой эффективности кода (а IDE это именно тот случай), и программисты успешно гнущие пальцы на форумах сталкивась со сложными проектами откровенно пасуют (причем по фигу каки они предпочитают языки), и сами динамические языки создают море трудностей при разработке IDE (информация то о типах есть только в рантайме в месте выполения). В итоге есть что есть. Самые крутые среды для Смолтока (о Руби и Питоне вообще не говорю) на поверку оказываются середнячками сильно уступающими лушим IDE для Java и C#.
P> Хотя для меня вопрос тоже риторический и на первых планах здесь никак ни "не правильность языка". А зря кстати если бы МС выпустил достойный аналог Smaltalk-а и также активно пиарил бы его возможно что бы "майнстрим" бы был бы совсем другой.
Это уже делал IBM. И очень упроно делал. Во второй половине 90-ых прошлого века. Но кончилось все тем, что эти проекты были выброшены на свалку истории, и сейчас IBM во всю развивает Яву.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
VD>>Когда ты запустишь этот код, то получишь исключение вырубающее приложение.
ANS>Внимание! Если кто-то считает, что после бросания исключения программа должна вырубиться, поставте пожалуйста "+" Владу в его пост.
Ну, или минус тебе за демагогию и извращение чужих слов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Eugene Beschastnov, Вы писали:
EB>Кстати:
VD>>Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код. EB>Несомненно, это именно та причина, по которой JIT-компилятор впервые появился именно в Smalltalk.
Здравствуйте, VladD2, Вы писали:
VD>"класс объекта записан в самом объекте" — это и есть "лежит приведенным к базовому типу вроде object" если говорить в терминах Ява/дотнет-рантайма.
Если говорить в терминах Java/DotNET — да, это максимальное приближение к реальности. И что? В реальности-то никакого "приведения типов" нету. А так получается, как в анекдоте:
— Слышал я вашего Карузо, фигня полная. Шепелявит, в ноту не попадает, ритм не выдерживает.
— А где ты его слышал-то?
— Да мне Рабинович напел.
PS. А еще можно рассуждать о функциональном программировании в терминах, например, Java
Здравствуйте, FR, Вы писали:
VD>>Цитирую, как говорится, классиков . VD>>
Я вот не мало в свое мремя пописал на разных динамических языках.
FR>Между тем же VB и питоном с руби разница не меньше чем между фортраном и шарпом
И что? Он от этого динамическим перстал быть? Да и речь не о VB. Это ты его сюда прилепил.
FR>Поэтому и интересно на каком именно динамическом языке ты много писал.
Их было шутк 5. Самый известный тебе наверно JScript. Столкнуться с ним пришлось в следствии того что это единственный язык для веб-страничек. 3 штуки это языки к разным финансовым системам.
FR>Люблю твои выводы читать FR>Тебе надо серъезно задуматся о карьере писателя — фантаста
ОК. Пошел думать. А то что-то я слишком много времени стал проводить с читательской аудиторией.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Ты как раз и думаешь больше в терминах реализации.
Ты меня с кем-то путаешь.
FR>Мы говорили про приведения типов, и твое описание подобное описанию например C++ классов глазами ассемблерщика, но ты перескочил на производительность.
Поднимись выше... почитай еще раз.
FR>Есть и другие методики, в обсуждениях смаллтока их не раз перетирали, а тебя похоже заклинило на одной конкретной реализации jit'а и все остальное ты видишь только преломленным через это свое понимание.
Меня не заклинило. Я реалист практик. А вы верите в чудеса.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Совсем маленькое дополнение: я написал "мне тяжело писать exception safe код", а ты говоришь о просто коде ("мне легко писать код"). Небезопасный по отношению к исключениям код и я пишу без проблем. А ты попробуй безопасный написать.
Еще раз. Мой код работает если в нем нет ошибок. А его отношение к рекламыным слоганам вроде exception safe меня просто не интересует.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Eugene Beschastnov, Вы писали:
VD>>>Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код. EB>>Несомненно, это именно та причина, по которой JIT-компилятор впервые появился именно в Smalltalk.
EB>Влад, и с чем же ты не согласен?
С отсуствием логической связи. Ее тут просто нет.
Ну, и еще с тем, что JIT появился в Смолтоке. В Смолтоке появилось название JIT. А динамическая компиляция была в Лиспе за долго до первой версии Смолтока. Но это уже не важно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Вот интересно. Пусть дорогой разработчик на Java в Москве получает $3K в месяц. И требуется ему писать софт, который работает под Windows, Linux, Solaris и MacOS. Затраты на него будут составлять $3K в месяц + $500 на приобретение IDEA. JDK для всех этих платформ бесплатен.
Плата за IDE в рассчете на месяц?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Eugene Beschastnov, Вы писали:
EB>Если говорить в терминах Java/DotNET — да, это максимальное приближение к реальности. И что? В реальности-то никакого "приведения типов" нету.
Как раз в реальности приведение или динамическая диспечерезация с анализом типа есть, но от тебя это всячески скрывается. По этому ты не вдишь разницу между массивом мономорфным и полиморфным.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
ГВ>>А можно узнать, с чем ты так настойчиво не согласен? VD>Ты все равно не поймешь. Он ведь ответит общепринятыми понятиями, а ты ведь их не признашь.
Да почему же не признаю? На общепринятом: раз молчит, значит сказать нечего.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, VladD2, Вы писали:
VD>Ген, мне кажется пора давно остановиться. Тебе уже несколько человек продемонстриоваало явные логические ляпы в твоих рассуждениях, но ты все равно продолжаещь делать хорошую мину и гнуть свое.
Ну, знаешь, если то, что мне тут говорят в ответ называть "логикой", то Кэрролл нервно отступает в Страну Чудес.
VD>Ведь в такой ситуации разумно или тихо прекратить обсуждение, или вообще признать — да был не прав...
Так я и признавал её там, где на то были основания. Основной тезис всё равно не опровергнут (в силу неопровержимости).
VD>Сколько можно продолжать эту бодягу?
Да не скажи, не скажи. Любопытная дискуссия получилась.
VD>И ведь из-за чего? Просто захотелось на зло Владам поддержать хама с распухшим самомнением? Неуже ли ты действительно хочешь относить к такой "элите"?
Для таких вопросов есть e-mail. Комментировать сие не буду.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!