Re[42]: Python vs C#
От: Gaperton http://gaperton.livejournal.com
Дата: 14.05.05 12:31
Оценка: :)))
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, FR, Вы писали:


Т>>>Чисто для прикола:

Т>>>
Т>>>"out.txt" 0: t[<t: 0: "text.txt"]
Т>>>

FR>>Ruby?
Т>Не, не Ruby. Это — Gaperton знает что.

"А это вообще gaperton-знает-что". Дожили — ругательство новое появилось . Такой язык можно только перебором определить, понятное дело, подсовывая код разным компиляторам, по другому no way.

Кстати, gaperton еще знает С++
Автор: Gaperton
Дата: 04.05.05
, до кучи .
Re[52]: Создание игр на managed-языках
От: Трурль  
Дата: 14.05.05 12:33
Оценка:
Здравствуйте, eao197, Вы писали:

E>Еще был какой-то случай, когда в программе на Фортране при написании константы вместо десятичной точки поставили запятую.

Вот это оно и есть.
Re[43]: Python vs C#
От: Трурль  
Дата: 14.05.05 12:43
Оценка:
Здравствуйте, eugals, Вы писали:

E>"перестановка, упорядочивающая файл"?

Ну, вывести номер наименьшей строки, потом следующей,...
Re[48]: Создание игр на managed-языках
От: Трурль  
Дата: 14.05.05 12:46
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>Угу только лапти запросто могут превратится в сапоги и наоборот в зависимости от решаемой задачи.

Лучше сравнивать кеды и сапоги.
Re[51]: Python vs C#
От: Cyberax Марс  
Дата: 14.05.05 12:46
Оценка: +1
WFrag wrote:

> C>3) Lots of Incredibly Stupid Parentheses

> Нет, это конфликтует с первым пунктом. Я же написал — любой синтаксис
> Если вдруг скобочки не устраивают.

Мне С++ный, пожалуйста... А на практике — LISP получается

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[50]: Создание игр на managed-языках
От: WolfHound  
Дата: 14.05.05 12:53
Оценка: :)
Здравствуйте, 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) А. Эйнштейн
Re[48]: Создание игр на managed-языках
От: WolfHound  
Дата: 14.05.05 12:53
Оценка:
Здравствуйте, FR, Вы писали:

FR>Не везде выгодно писать в ОО стиле.

Не везде это числодробилки, а вот скрипты очень даже выгодно.

FR>У питона своя специфика, но все таки не вижу проблем для написания такой утилиты.

Ну попробуй написать утилиту которая переименует функцию Foo в классе Some1
class Some1:
    def Foo(self):
        print "hello1"

class Some2:
    def Foo(self):
        print "hello2"

def Bar(obj):
    obj.Foo()

obj1 = Some1()
Bar(obj1)

obj2 = Some2()
Bar(obj2)


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) А. Эйнштейн
Re[48]: Создание игр на managed-языках
От: Cyberax Марс  
Дата: 14.05.05 13:18
Оценка:
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 файл.

В современных играх — уже не просто ini-файл.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[52]: Создание игр на managed-языках
От: Cyberax Марс  
Дата: 14.05.05 13:21
Оценка:
eao197 wrote:

> P.S. Лично я последние два случая знаю только из программиского

> фольклера (в смысле, что сам не читал каких-либо статей, где
> утвердалось бы именно такая причина катастрофы).

Для Ариан-5 можно найти в Сети pdf-ку с отчетом.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[44]: Python vs C#
От: eugals Россия  
Дата: 14.05.05 13:28
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Ну, вывести номер наименьшей строки, потом следующей,...

python -c "for _, i in sorted(map(reversed, enumerate(file('test.xsl')))): print i" > out.txt

GNUшные утилиты плохо знаю и разбираться сейчас некогда
... << RSDN@Home 1.1.4 beta 5 rev. 395>> {WinAmp: Andrew Lloyd Webber — The Last Supper}
Re[45]: Python vs C#
От: eugals Россия  
Дата: 14.05.05 13:37
Оценка:
Здравствуйте, eugals, Вы писали:

Т>>Ну, вывести номер наименьшей строки, потом следующей,...

E>
E>python -c "for _, i in sorted(map(reversed, enumerate(file('test.xsl')))): print i" > out.txt
E>


Ошибочка. Лучше так:
python -c "for _, i in sorted((s, i) for i, s in enumerate(file('text.txt'))): print i" > out.txt
... << RSDN@Home 1.1.4 beta 5 rev. 395>> {WinAmp: Andrew Lloyd Webber — The Last Supper}
Re[50]: Python vs C#
От: WFrag США  
Дата: 14.05.05 13:39
Оценка:
Здравствуйте, FR, Вы писали:

WF>>1) Любой синтаксис, который нам понравится.


FR>ты ссылку до конца прочитал?


Да вроде бы...

Например, хочу синтаксис паскаля Или я что-то в статье не понял.
... << RSDN@Home 1.1.4 beta 6a rev. 438>>
Re[52]: Python vs C#
От: WFrag США  
Дата: 14.05.05 13:39
Оценка: 18 (1)
Здравствуйте, Cyberax, Вы писали:

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-а. А если отбросить парсер и оставить скобочный синтаксис — так и еще проще, не нужно XML в скобки превращать

Но речь не о LISP-е идет. Это один из возможных примеров.
... << RSDN@Home 1.1.4 beta 6a rev. 438>>
Re[48]: Создание игр на managed-языках
От: WolfHound  
Дата: 14.05.05 13:50
Оценка:
Здравствуйте, 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) А. Эйнштейн
Re[53]: Python vs C#
От: WolfHound  
Дата: 14.05.05 13:58
Оценка:
Здравствуйте, 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) А. Эйнштейн
Re[49]: Создание игр на managed-языках
От: FR  
Дата: 14.05.05 13:58
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, FR, Вы писали:


FR>>Не везде выгодно писать в ОО стиле.

WH>Не везде это числодробилки, а вот скрипты очень даже выгодно.

смотря какие скрипты.

FR>>У питона своя специфика, но все таки не вижу проблем для написания такой утилиты.

WH>Ну попробуй написать утилиту которая переименует функцию Foo в классе Some1
WH>
WH>class Some1:
WH>    def Foo(self):
WH>        print "hello1"

WH>class Some2:
WH>    def Foo(self):
WH>        print "hello2"

WH>def Bar(obj):
WH>    obj.Foo()

WH>obj1 = Some1()
WH>Bar(obj1)

WH>obj2 = Some2()
WH>Bar(obj2)
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 вещи не совместимые.

не знаю не видел.
Re[51]: Создание игр на managed-языках
От: FR  
Дата: 14.05.05 13:58
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, FR, Вы писали:


FR>>PyChecker пишет: D:\temp\_tst\p1\tst1.py:4: No global (x) found

WH>Вот скажи мне на кой черт нужны PyChecker'ы если есть нормальные языки которые и без PyChecker'ов такой код не пропустят?

Зато много чего другого пропустят.
Нажать на Check ни чем ни сложнее чем на Compile.
Re[53]: Python vs C#
От: Cyberax Марс  
Дата: 14.05.05 14:13
Оценка:
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-файла. Лисп там ну абсолютно никакой
разницы бы не сделал.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[50]: Создание игр на managed-языках
От: WolfHound  
Дата: 14.05.05 14:17
Оценка:
Здравствуйте, FR, Вы писали:

FR>Это проблема не из-за того что в питоне динамическая типизация, а из-за того что функция Bar обобщеная, то же самое будет и в плюсах с шаблонами, в принципе вполне разрешима и в плюсах(частичной специализацией) и в питоне(динамическим определнием типа внутри Bar).

Да в питоне все обобщенное ибо типизация динамическая вот собственно и все. Вот и конец рефакторингу.

FR>понятно ты просто не видишь эти варнинги.

Предположение не верное. У меня естих варнингов нет.

WH>>Будет гораздо больше если добавить объем юнит-тестов.

FR>вряд-ли
Будет. Никуда не денится. Ибо надо же типизацию везде проверить.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[54]: Python vs C#
От: WFrag США  
Дата: 14.05.05 14:19
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>А отладчик и автокомплит на этом DSL работать будут?


Разумеется, нет. Работы наверняка ведутся, но я ничего внятного не скажу — не встречал.
... << RSDN@Home 1.1.4 beta 6a rev. 438>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.