Здравствуйте, Трурль, Вы писали:
Т>Здравствуйте, FR, Вы писали:
Т>>>Чисто для прикола: Т>>>
Т>>>"out.txt" 0: t[<t: 0: "text.txt"]
Т>>>
FR>>Ruby? Т>Не, не Ruby. Это — Gaperton знает что.
"А это вообще gaperton-знает-что". Дожили — ругательство новое появилось . Такой язык можно только перебором определить, понятное дело, подсовывая код разным компиляторам, по другому no way.
Здравствуйте, eao197, Вы писали:
E>Еще был какой-то случай, когда в программе на Фортране при написании константы вместо десятичной точки поставили запятую.
Вот это оно и есть.
Здравствуйте, FR, Вы писали:
FR>Угу только лапти запросто могут превратится в сапоги и наоборот в зависимости от решаемой задачи.
Лучше сравнивать кеды и сапоги.
WFrag wrote:
> C>3) Lots of Incredibly Stupid Parentheses > Нет, это конфликтует с первым пунктом. Я же написал — любой синтаксис > Если вдруг скобочки не устраивают.
Мне С++ный, пожалуйста... А на практике — LISP получается
Здравствуйте, FR, Вы писали:
FR>PyChecker пишет: D:\temp\_tst\p1\tst1.py:4: No global (x) found
Вот скажи мне на кой черт нужны PyChecker'ы если есть нормальные языки которые и без PyChecker'ов такой код не пропустят?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, FR, Вы писали:
FR>Не везде выгодно писать в ОО стиле.
Не везде это числодробилки, а вот скрипты очень даже выгодно.
FR>У питона своя специфика, но все таки не вижу проблем для написания такой утилиты.
Ну попробуй написать утилиту которая переименует функцию Foo в классе Some1
FR>то есть ты всегда выставляешь level 4 и "Treat Warnings As Error"?
Нет. Я всеголишь не использую небезопасные конструкции доставшиеся в наследство от С.
А если этим не пользоваться то С++ строготипизированый язык.
WH>>Микрософт перенесет его везде где есть винда очень быстро. А всякие линухи лично меня не волнуют. FR>понятно FR>консоли тоже?
Мне почемуто кажется что оно там таки будет.
FR>тем что гораздо компактнее, и сразу написан портируемым.
А! Ну-ну.
FR>Угу, только программа на питоне будет гораздо меньше чем эти несколько мегабайт.
Будет гораздо больше если добавить объем юнит-тестов.
FR>А что ты еще хотел от дизайнеров?
Я бы им объяснил как и почему именно так надо писать. И приложил бы максимум усилий чтобы осложнить хардкодинг.
FR>вряд ли долго, очень помогает интерактивность, поменял что-то и сразу видно, часто без перезапуска приложения. Интерактивность и Vampire: The Masquerade Bloodlines вещи не совместимые.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
FR wrote:
> C>Объясните, что вы понимаете под "процедурным стилем"? Код с глобальными > C>переменными и фукнциями? > Нет скоре то что сильно любят Вирт и Дейкстра, код без глобальных > переменных и goto, хорошо структуированный.
Хороший процедурный код (например код на языке С в Subversion, GTK,
GIMP) почти не отличается от ОО-кода по своей сути.
> C>Вот такой код: > C> > >C>class Test >C> def test_method(self): >C> ... >C>... >C>tst=some_external_function() >C>tst.test_method() >C> > > > C>Предположим, что код класса "Test" и переменная tst расположены в > разных > C>файлах в большом проекте из 5000 классов. Как нам теперь переименовать > C>метод test_method в new_test_method? > так и в питоне можно запустить PyChecker и получить тоже > AttributeError: Test instance has no attribute 'test_method'
А _откуда_ PyChecker узнает, что some_external_function возвращает
переменную типа Test? Язык-то динамический.
В С++ тип декларируется в описании переменной.
> C>Темплейты в С++ — это огромное его преимущество, и ничуть не > сомнительное. > обобщенное программирование в питоне тоже.
Нету его там в нормальном. Есть name-based polymorphism, который по сути
тоже есть в шаблонах С++, это используется для CRTP (Curously Recurring
Template Pattern).
> C>Переносимый вариант (Mono) выйдет через пол-года. > А разве C#2 от ms уже вышел?
Через два месяца. Разработка Mono2 идет параллельно с MSами, релиз
планируют на осень.
> C>Не факт. > Если судить по играм то факт.
А есть игры с C# для скриптов (для сравнения)?
> C>Только если при этом он будет делать примерно то же, что и "hello > world". > ты контекст отслеживай, я говорил про настроечные скрипты в играх, это > "умный" ini файл.
eao197 wrote:
> P.S. Лично я последние два случая знаю только из программиского > фольклера (в смысле, что сам не читал каких-либо статей, где > утвердалось бы именно такая причина катастрофы).
И делается это проще, чем, например комбинация: XML->XML Parser->DOM Model->Lots of Java code->CGLIB->Java byte code для какого-нибудь DSL, например, для ORM mapping-а. А если отбросить парсер и оставить скобочный синтаксис — так и еще проще, не нужно XML в скобки превращать
Но речь не о LISP-е идет. Это один из возможных примеров.
Здравствуйте, eao197, Вы писали:
WH>>Ты на шарпе с решарпером писал? E>Нет. Я сейчас на C++ и vim .
А ты попробуй.
Допустим пишем так
class Test
{
int m_Int1;
int m_Int2;
int m_Int3;
int m_Int4;
}
Далие нажимаем пару кнопок и получаем реализацию конструктора
public Test(int int1, int int2, int int3, int int4)
{
m_Int1 = int1;
m_Int2 = int2;
m_Int3 = int3;
m_Int4 = int4;
}
Нажимаем еще пару кнопок и получаем реализацию свойства
public int Int4
{
get { return m_Int4; }
set { m_Int4 = value; }
}
Причем обращения к m_Int4 заменяются на Int4
Или скажем понадобился нам какойто класс например Thread.
Делаем следующие действия
1)Набираем thr
2)Нажимаем ctrl+alt+space и получаем список всех классов которые начинаются на thr
3)Выбераем Thread
После этого решерпер сам вставит в начало исходника
using System.Threading;
А еще он в реальном времени подсвечивает в коде ошибки и предупреждения. Болие того для многих ошибок он предлагает варианты лечения. И я эту фичу постоянно использую.
Например пишу какойто код и мне понадобилось создать новую функцию которая чтото сделает с строкой и интом и возвратит флоат.
int i;
string s;
float f=Foo(i, s);
нажимаю пару кнопок и получаю
private float Foo(int i, string s)
{
throw new NotImplementedException();
}
красота
И еще очень много различных примочек без которых мне уже довольно трудно работать. Ибо к хорошему привыкаешь быстро.
E>А сложные куски программ сначала на бумаге пишу -- зато потом и рефакторинг не нужен
Мне с этим гораздо проще. Не понравилось имя класса нажал несколько кнопок и переименовал его во всей программе. Причем эта штука опционально может переименовывать не только сам тип но и переменные этого типа.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WFrag, Вы писали:
WF>Я думаю, потому что никому нафиг не надо C++. Изображать LISP-ом C++ синтаксис — совершенно бесполезное занятие. WF>Вот тебе Pascal вместо C++: WF>http://arxiv.org/abs/cs.PL/0409016
А отладчик и автокомплит на этом DSL работать будут?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FR, Вы писали:
FR>>Не везде выгодно писать в ОО стиле. WH>Не везде это числодробилки, а вот скрипты очень даже выгодно.
смотря какие скрипты.
FR>>У питона своя специфика, но все таки не вижу проблем для написания такой утилиты. WH>Ну попробуй написать утилиту которая переименует функцию Foo в классе Some1 WH>
Это проблема не из-за того что в питоне динамическая типизация, а из-за того что функция Bar обобщеная, то же самое будет и в плюсах с шаблонами, в принципе вполне разрешима и в плюсах(частичной специализацией) и в питоне(динамическим определнием типа внутри Bar).
FR>>то есть ты всегда выставляешь level 4 и "Treat Warnings As Error"? WH>Нет. Я всеголишь не использую небезопасные конструкции доставшиеся в наследство от С. WH>А если этим не пользоваться то С++ строготипизированый язык.
понятно ты просто не видишь эти варнинги.
WH>>>Микрософт перенесет его везде где есть винда очень быстро. А всякие линухи лично меня не волнуют. FR>>понятно FR>>консоли тоже? WH>Мне почемуто кажется что оно там таки будет.
Угу лет через 5 — 10.
FR>>тем что гораздо компактнее, и сразу написан портируемым. WH>А! Ну-ну.
FR>>Угу, только программа на питоне будет гораздо меньше чем эти несколько мегабайт. WH>Будет гораздо больше если добавить объем юнит-тестов.
вряд-ли
FR>>А что ты еще хотел от дизайнеров? WH>Я бы им объяснил как и почему именно так надо писать. И приложил бы максимум усилий чтобы осложнить хардкодинг.
FR>>вряд ли долго, очень помогает интерактивность, поменял что-то и сразу видно, часто без перезапуска приложения. WH> Интерактивность и Vampire: The Masquerade Bloodlines вещи не совместимые.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FR, Вы писали:
FR>>PyChecker пишет: D:\temp\_tst\p1\tst1.py:4: No global (x) found WH>Вот скажи мне на кой черт нужны PyChecker'ы если есть нормальные языки которые и без PyChecker'ов такой код не пропустят?
Зато много чего другого пропустят.
Нажать на Check ни чем ни сложнее чем на Compile.
WFrag wrote:
> C>Мне С++ный, пожалуйста... А на практике — LISP получается > Я думаю, потому что никому нафиг не надо C++.
Мне, например, вот надо
> Изображать LISP-ом C++ синтаксис — совершенно бесполезное занятие.
Говорили "любой", а выходит что кроме замен на инфиксные операции и
переименований некоторых функций, дальше вся синтаксическая гибкость
Лиспа и не идет.
> Вот тебе Pascal вместо C++: > http://arxiv.org/abs/cs.PL/0409016 > И делается это проще, чем, например комбинация: XML->XML Parser->DOM > Model->Lots of Java code->CGLIB->Java byte code для какого-нибудь DSL, > например, для ORM mapping-а.
И причем здесь ORM? Просто так, чтобы к слову? В той же Hibernate'е XML
используется только для того, чтобы задавать настройки, то есть в
качестве такого продвинутого ini-файла. Лисп там ну абсолютно никакой
разницы бы не сделал.
Здравствуйте, FR, Вы писали:
FR>Это проблема не из-за того что в питоне динамическая типизация, а из-за того что функция Bar обобщеная, то же самое будет и в плюсах с шаблонами, в принципе вполне разрешима и в плюсах(частичной специализацией) и в питоне(динамическим определнием типа внутри Bar).
Да в питоне все обобщенное ибо типизация динамическая вот собственно и все. Вот и конец рефакторингу.
FR>понятно ты просто не видишь эти варнинги.
Предположение не верное. У меня естих варнингов нет.
WH>>Будет гораздо больше если добавить объем юнит-тестов. FR>вряд-ли
Будет. Никуда не денится. Ибо надо же типизацию везде проверить.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн