Здравствуйте, Дарней, Вы писали:
E>>Eiffel, например. Совсем таки не элитарный язык, а непосредственный конкурент Java и C#, да еще и появившийся гораздо раньше. Оказался в заднице благодоря маркетингу.
Д>ну что ж, непомерную жадность можно наверно и к области маркетинга отнести. Хотя по моему, это больше вопрос здравого смысла и специального образования маркетолога здесь не требуется Д>а вообще я про него мало что знаю, кроме того факта, что там есть инварианты — и это конечно плюс, хотя вряд ли решающий Д>что еще в нем есть интересного? есть ли какие-то серьезные преимущества перед C#, к примеру?
Ну что есть? Всего не упомнишь, тем более, что дальше чтения документации из-за цен на Eiffel Studio у меня процесс не пошел.
Сборка мусора, объекты-ссылки и объекты значения.
Множественное наследование есть (с гибкой настройкой видимости имен).
Обобщенные типы (что-то вроде C++ шаблонов, но проще, без заморочек).
Указатели на функции и на методы объекта как агенты (что-то вроде C++ функторов, но проще и удобнее).
Паскалеподобный синтаксис.
Удобная система доступа к атрибутам. Например, запись:
a.value
может означать как обращение к атрибуту объекта с именем value, так и вызов метода-getter-а с именем value.
Модульная система (что-то похожее на Java-вские пакеты).
Ну и, конечно же, контракты.
Сравнивать Eiffel и C# я не буду, т.к. мне не интересен ни тот, ни другой. Но сам факт, что Eiffel появился в 86-м...
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, FR, Вы писали:
F>>Тут так же имеется часто (хотя и не всегда, согласен) верное следствие, что если даже слабый программист сможет при помощи данного средства эффективно решить задачу, то более сильный с помощью того же средства сможет решить ее еще быстрее.
FR>Это неверное утверждение. Такие инструменты просто для некторого класса задач нивелируют уровень программистов. Но очень часто ничем ни помогают или даже мешают более сильному решать нетипичные задачи.
Нетипичные — запросто. Я говорил про типичные
Для решения типичных задач специальные средства обычно помогают и сильным и слабым.
Нетипичные задачи — это всегда отдельный и сложный вопрос
Собственно — я там про это долго и писал...
На VB6 быстро рисуются GUI-фромчки. И задачу с небольшой вычислительнйо частью и пользовательским GUI что сильный что слабый программист легко на нем сделают. Сильный — все равно гораздо быстрее (сам видел). Вот для такой задачи он хорош (а очень ведь типичная задача в определенных кругах).
Ну а, скажем, реализовать чисто на нем хоть какой численный алгоритм — это, конечо, убиться можно, я тут и не спорю...
Здравствуйте, Andrei N.Sobchuck, Вы писали:
IT>>Желающие могут переписать это на свой лад и даже поприменять разные паттерны, но боюсь что более компактного кода, чем на Nemerle не получится. ANS>Один раз уже пробовал — <b>получается</b>
Здравствуйте, Курилка, Вы писали:
К>И как тебе этот паттерн вернёт управление в parse-log-entry? К>В лисповских кондишнах рестарты изначально есть как механизм обработки ситуации, тогда как в "традиционных" подходах, если мы "провалились" по исключению, то обратного пути нет.
Не надо сразу кидать исключение. Надо спрашивать у стратегии, "что нам делать", и по результатам кидать исключение или продолжать работу.
Нафиг-нафиг такой ответ. Еще раз, нужно не переписать программу один в один (чем и занимается компилятор), а написать ОО программу, которая давала бы тайкой же результат. Ы?
Здравствуйте, Дарней, Вы писали:
ГВ>>Вот именно. Если делать делать выводы на основании популярности и распространённости. Д>осталось еще понять, что кроме популярности есть второй фактор — время. И если за n>10 лет язык остался широко известен в узком кругу фанатов, то делать некоторые выводы из этого таки можно.
Нельзя делать выводы о качественных сторонах продукта по его распространённости.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, pavel74, Вы писали:
VD>>Собственно этим и отличается динамический язык от статического. С одной стороны чуть проще, так как подобные хаки не требуют специальных вызовов вроде Convert.ToDouble(elem) (все приводится автоматом), P>Ну наконец-то . Полностью согласен, за это и любят динамические языки.
А по мне так необходимость таких хаков следствие кривого дизайна.
Единственное где нужно при нормальном дизайне Convert.ToXXX это ввод/вывод.
Спрашивается накой черт мне нужен весьма сомниетльный сахар для ввода/вывода если этого самого ввода/вывода очень мало и он очень хорошо автамитизируется?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, eao197, Вы писали:
E>Eiffel, например. Совсем таки не элитарный язык, а непосредственный конкурент Java и C#, да еще и появившийся гораздо раньше. Оказался в заднице благодоря маркетингу.
Советую сходить на eiffel.com и узнать, что он вовсе даже не в заднице, а его создатели гребут бабло. В том числе и с Microsoft, Sun, IBM и т.д.
Здравствуйте, Turtle.BAZON.Group, Вы писали:
E>>Eiffel, например. Совсем таки не элитарный язык, а непосредственный конкурент Java и C#, да еще и появившийся гораздо раньше. Оказался в заднице благодоря маркетингу.
TBG>Советую сходить на eiffel.com и узнать, что он вовсе даже не в заднице, а его создатели гребут бабло. В том числе и с Microsoft, Sun, IBM и т.д.
Так гребут, что вынуждены делать бесплатную версию своей EiffelStudio чтобы привлечь новых разработчиков.
Лет десять назад у них, вероятно, особых проблем-то и не было. А сейчас, на фоне распространенности Java (которая бесплатно есть на большем количестве платформ, чем Eiffel), агрессивного маркетинга C#, количества библиотек и фреймворков для Java и C#, количества IDE для Java/C#, количества документации/книг/учебных курсов, количества разработчиков, имеющих опыт разработки на Java/C#, перспективы у Eiffel-я, имхо, очень не важные.
Не зря же Мейер сейчас статейки пишет, что мол дешевые индусы и воссточные славяне оставят без работы дорогих американских разработчиков. Если только последние не возьмутся за ум и не начнут использовать "правильные" инструменты, резко повышающие их (разработчиков то есть) производительность, то хана им. А правильным инструментом, естественно, является Eiffel Methodology + Eiffel Studio. Хотя чем Eiffel сейчас может конкурировать, например, с Java 5 + IDEA (Eclipse) лично я, например, не понимаю.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Нафиг-нафиг такой ответ. Еще раз, нужно не переписать программу один в один (чем и занимается компилятор), а написать ОО программу, которая давала бы тайкой же результат. Ы?
Иди сюда и попробуй переписать SprintTyExpr в ОО стиле
Особенно мне интересно что ты будешь делать с подобными выкрутасами:
// the special case for unary operators
| TT.TExpr.Call (TT.TExpr.OpCode (name), [parm], _) =>
append (name);
append ("(");
recurse (parm.expr);
append (")");
// the special case for infix binary operators
| TT.TExpr.Call (TT.TExpr.OpCode (name), [parm1, parm2], _) =>
append ("(");
recurse (parm1.expr);
append (" " + name + " ");
recurse (parm2.expr);
append (")")
// pretty print the list constructors
| TT.TExpr.Call (TT.TExpr.StaticRef (_, mem, _), _, _) when is_list_cons (mem) =>
print_list_constructors (expr)
// write all the other calls in prefix form
| TT.TExpr.Call (func /* PExpr */, parms /* list [Parm] */, _) =>
recurse (func);
append (" (");
print_fun_call_parms (parms);
append (")")
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Beam, Вы писали:
B>Я открыл статью Nemerle в Wikipedia, и я увидел, что та проблема, значение который Вы так пытаетесь преувеличить (незавершение работы метода, в который передан BlockClosure с возвратом), имеется и у Nemerle в макросах.
Вы на верном пути. Есть мнение, что return где не появляется — везде вызывает проблемы, хотя и не одинаковой серьезности.
В Nemerle можно вообще не прыгать. И, по умолчанию, возможности прыгать нет. По-моему, это не может не радовать. Но, видимо по той причине, что возможность попрыгать — это такие милые сердцу программистов грабельки, которые дороги как память, если очень хочется попрыгать все-таки можно. Для этого нужно подключить опредленное простарнство имен. Вот это мне, как раз, не очень нравится, хотя почему такую возможность оставили я понимаю.
Непонятно мне другое. Почему возможность прыгнуть в Nemerle является оправдание возможности прыгнуть (причем, как я понял, гораздо дальше) в смолтоке? Тут, конечно, были примеры по существу вопроса, как использование ^ помогает сократить код, но вот это вообще к делу отношения не имеет.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, pavel74, Вы писали:
P>И еще замечу такую странность , те кто реально программирует на динамических языках — этот недостаток не считают фатальным (в сравнению с получаемыми упрощениями). А те кто только теоритически рассуждает — считают фатальным.
А чего странного? Кто не считает фатальным — реально программирует. Кто считает фатальным — рассуждает теоретически. И те и другие свой выбор сделали — вот и вся магия.
Это просто взгляд на проблему с позиции "я так делаю потому, что это хорошо", а не "это хорошо потому, что я так делаю".
Впрочем, я пошутил.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, vdimas, Вы писали:
K>>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот. V>Является, к сожалению. У характеристики "меньшинство/большинство" всего 2 значения.
А если посмотреть на выделенное?
K>>Численность группы не обязана коррелировать с правотой воззрений этой группы.
V>Хоть и верно но вообще не в тему. В том смысле что не доказывает и не опровергает ни чьей стороны, нейтральное громкое высказывание.
Это как раз в тему, в отличие от многих других сообщений в этом треде. И оно опровергает.
Вообще, само обсуждение этого вопроса — какое-то тихое безумие. Или детский сад.
"Я пойду туда, потому что туда все пошли" или "я не пойду туда, потому что туда все пошли" — я вообще не вижу разницы.
Тут где-то мозг задействуется?
Если все это понимают, о чем вообще разговор тогда?
Почему как только разговор заходит о правоте — непременно вспоминают и о численности?
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, Геннадий Васильев, Вы писали:
K>>>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот. ГВ>>>Но осуждение "бездумного следования вообще" не должно сопровождается указанием качеств какой-либо группы "за которой следуют". В данном случае
, однако, группа была указана и коррекций не последовало. F>>Вообще-то это высказываение как раз и было коррекцией — оно отлично дополняло высказывание предыдущего оратора, что "следование за большинством в наименьшей мере требует работы мозга", и как раз приводило систему в баланс — получая именно ситуацию "бездумного следования за кем-либо вообще". ГВ>Какая ещё, сто тысяч микробайт в шлейф, система?! Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.
Это просто пять баллов. Прямо сейчас во флейм и создавать тему "общепринятый" термин vs. "правильный".
Сотни людей столкнутся лбами и отпрянут с зубовным лязгом. Вот это веселье!
Флеймообразующая концепция ясна как день: никто никогда нигде не знает, что правильно, но все всегда везде думают, что это знают.
Сработает безотказно!
Хотя, я наверное сейчас без толку распинаюсь. "Мне не страшны твои угрозы, Кассий! Они (как что-то там мнеее... память ни к черту) пролетают мимо!"
Как это все объяснить человеку, который говорит, что "истина всегда конкретна". Это тупик.
Но я попробую. Вообще-то, терминология — это результат договоренности. В этом смыcле все термины, конечно, должны быть общепринятыми. Правильные они или нет — вопрос сложный. Определенно — это не исключено. Понятно — очень зависит от того, что понимается под словом "правильный". Мое мнение: учитывая что терминология существует для того, чтобы люди друг друга понимали, то правильный термин в системе из n обменивающихся информацией людей такой, который одинаково понимают больше чем n/2. Т.е. общеприянтый.
Что касается каких-то фактических сведений о мире — тут все, конечно, сложнее.
Общепринято, что Земля — круглая. Это не так. Земля имеет форму геоида. Общеприянтые понятия "круг" и "геоид" нетождественны.
Общепринято, что вечный двигатель первого рода невозможен. Это действительно так (с очень хорошей вероятностью -> 1). Означает ли это, что перпетуум-мобилистов зажимает тупое большинство?
В большинстве случаев все упирается в договоренность. Кое-что можно доказать, но в рамках системы, непротиворечивость которой невозможно доказать в принципе. Что-то можно проверить на опыте (впрочем, доказательстов в этом случае будет иметь гм... статистический характер. В конце концов, вопросы в науке решаются не голосованием людей, а гы-гы голосованием экспериментов)
ГВ>В таком контексте упоминание меньшинства в негативном смысле как раз указывает на то, что надо следовать за большинством, даже если оно поставило всё с ног на голову.
Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил.
Так говорил кхм... Геннадий Васильев.
F>>Предыдущий оратор из этого высказывания взял только часть. Это называется — некорректное уточнение. ГВ>Не-а. АК всё совершенно правильно сказал. Именно большинство, именно бездумное следование и именно размахивание "общепринятым" как показатель этой самой бездумности.
Вот он, образ врага! Скифы, азиаты. Их много. Слышится ржание их коней. Размахивают. Голова — чтобы в нее есть.
Подтягивают к стенам нашей цитадели осадные ветряные мельницы на колесах.
Нас мало — понятно, что мы лучше. Правда, тут главное не ошибиться и не оказаться не в том хвосте нормального распределения.
ГВ>Я понял в чём прикол. Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил. Вот что было сказано, то и стало объектом обсуждения.
Интересно, обстоятельно, респектабельно. Хоть сейчас на скрижали. Жаль только, что это, похоже, принцип на экспорт, а не для внутреннего пользования.
Впрочем, воспринимать продукт творчества любого автора без некоторой доли фантазии — совершенно невозможно. Ведь существует же недоговоренность. Всегда. Любые слова вырваны из контекста, который у автора в голове и нам совершенно не известен.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
VD>Собственно этим и отличается динамический язык от статического. С одной стороны чуть проще, так как подобные хаки не требуют специальных вызовов вроде Convert.ToDouble(elem) (все приводится автоматом)
В динамике нет никаких приведений, какой тип передали тот и используется, и исключение если он не подерживает то что требуется. И хаками это является только для статических языков.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, pavel74, Вы писали:
VD>>>Собственно этим и отличается динамический язык от статического. С одной стороны чуть проще, так как подобные хаки не требуют специальных вызовов вроде Convert.ToDouble(elem) (все приводится автоматом), P>>Ну наконец-то . Полностью согласен, за это и любят динамические языки. WH>А по мне так необходимость таких хаков следствие кривого дизайна.
нет никаких хаков
WH>Единственное где нужно при нормальном дизайне Convert.ToXXX это ввод/вывод.
Вот Convert.ToXXX как раз хак для кривого эмулирования динамического яхыка на статическом.
WH>Спрашивается накой черт мне нужен весьма сомниетльный сахар для ввода/вывода если этого самого ввода/вывода очень мало и он очень хорошо автамитизируется?
Я еще такого оригинального определения динамической типизации: