Re[50]: Создание игр на managed-языках
От: Cyberax Марс  
Дата: 14.05.05 14:22
Оценка:
FR wrote:

>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).

1. В C# эта проблема не возникнет _вообще_ (если функция Bar не будет
использовать reflection для вызова obj.Foo).
2. В С++ аналогичный код:
struct Some1
{
    void Foo() {cout<<"hello1\n";}
};
struct Some2
{
    void Foo() {cout<<"hello2\n";}
};
template<class T> void Bar(T& t)
{
    t.Foo();
}

Some1 obj1;
Bar(obj1);
Some2 obj2;
Bar(obj2);

после переименования Foo в классе Some1 откажется компилироваться.
3. Питоновская программа упадет во время исполнения.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[54]: Python vs C#
От: Gaperton http://gaperton.livejournal.com
Дата: 14.05.05 14:28
Оценка: +1 :))
Здравствуйте, WolfHound, Вы писали:

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


WF>>Я думаю, потому что никому нафиг не надо C++. Изображать LISP-ом C++ синтаксис — совершенно бесполезное занятие.

WF>>Вот тебе Pascal вместо C++:
WF>>http://arxiv.org/abs/cs.PL/0409016
WH>А отладчик и автокомплит на этом DSL работать будут?
А ты пробовал когда-нибудь встроить в свою программу среду разработки от MS и сделать из этого DSL? Хотя бы специально для этого предназначенный Visual Basic for Applications? А ты попробуй. Тогда понятно станет, почему большинство производителей предпочитают так не делать, не покупаясь на замануху вроде отладчика и автокомплита. Все эти мульки в результате проще самому написать.

Кстати, предупреждая ответы в духе "а вот .NET" — проект Visual Studio for Applications.NET свернут осенью прошлого года. Нет никакого дотнета . А прежде чем предлагать с каждой копией продукта тащить полноценный VS.NET подумайте о том, как это будет лицензироваться и сколько будет стоить вашему клиенту.
Re[54]: Python vs C#
От: WFrag США  
Дата: 14.05.05 14:32
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Мне, например, вот надо


Я имею ввиду, изображать C++ на LISP.

>> Изображать LISP-ом C++ синтаксис — совершенно бесполезное занятие.


C>Говорили "любой", а выходит что кроме замен на инфиксные операции и

C>переименований некоторых функций, дальше вся синтаксическая гибкость
C>Лиспа и не идет.

Почему? Хитрость простая. Текст на DSL-языке — это просто строка, макрос может сделать с ней (в compile-time) все, что угодно — в том числе распарсить язык и отобразить в "скобочки" (которые в свою очередь разворачиваются другими макросами в низкоуровневый код).

C>И причем здесь ORM? Просто так, чтобы к слову? В той же Hibernate'е XML

C>используется только для того, чтобы задавать настройки, то есть в
C>качестве такого продвинутого ini-файла. Лисп там ну абсолютно никакой
C>разницы бы не сделал.

Настройки — это тоже язык. Только в случае Java нам остается только интепретатор — загрузчик настроек. А в случае LISP мы могли бы его компилировать (вернее сумму настройки+модельные классы+бизнес логика) получая исключительно исполняемый код. И не нужно грузить настройки — они "вкомпилируются" в программу (Partial Evaluation во всей красе).

То есть даем на вход модельные классы+настройки (маппинг), получаем исполняемый код, заточенный под данные классы и настройки (грубо говоря, выполнение конкретных SQL выражений в нужных местах).
... << RSDN@Home 1.1.4 beta 6a rev. 438>>
Re[49]: Создание игр на managed-языках
От: FR  
Дата: 14.05.05 14:45
Оценка:
Здравствуйте, Cyberax, Вы писали:


>> так и в питоне можно запустить PyChecker и получить тоже

>> AttributeError: Test instance has no attribute 'test_method'

C>А _откуда_ PyChecker узнает, что some_external_function возвращает

C>переменную типа Test? Язык-то динамический.

Сначала он импортирует все модули и все что можно проанализировать анализирует,
Потом все таки запускает программу, и тоже анализирует.

C>В С++ тип декларируется в описании переменной.


>> C>Темплейты в С++ — это огромное его преимущество, и ничуть не

>> сомнительное.
>> обобщенное программирование в питоне тоже.

C>Нету его там в нормальном. Есть name-based polymorphism, который по сути

C>тоже есть в шаблонах С++, это используется для CRTP (Curously Recurring
C>Template Pattern).

однако это не мешает легко писать на питоне обобщенный и повторно используймый код


>> C>Не факт.

>> Если судить по играм то факт.

C>А есть игры с C# для скриптов (для сравнения)?


Не знаю. Есть игры целиком написанные на шарпе.

>> C>Только если при этом он будет делать примерно то же, что и "hello

>> world".
>> ты контекст отслеживай, я говорил про настроечные скрипты в играх, это
>> "умный" ini файл.

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


В современных играх скрипты используются для разных целей, в том числе и для создания умных ini, и для описания логики игровых объектов и для реализации GUI.
Re[55]: Python vs C#
От: WolfHound  
Дата: 14.05.05 14:49
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>А ты пробовал когда-нибудь встроить в свою программу среду разработки от MS и сделать из этого DSL?

Именно этим я сейчас и занимаюсь. При том вполне успешно.
G>Хотя бы специально для этого предназначенный Visual Basic for Applications? А ты попробуй. Тогда понятно станет, почему большинство производителей предпочитают так не делать, не покупаясь на замануху вроде отладчика и автокомплита. Все эти мульки в результате проще самому написать.
Написать аналог ReSharpera? Да вы батенька .

G>Кстати, предупреждая ответы в духе "а вот .NET" — проект Visual Studio for Applications.NET свернут осенью прошлого года. Нет никакого дотнета . А прежде чем предлагать с каждой копией продукта тащить полноценный VS.NET подумайте о том, как это будет лицензироваться и сколько будет стоить вашему клиенту.

0$ Ибо есть есть экспресы.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[51]: Создание игр на managed-языках
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.05.05 14:57
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>PS: вот если бы они коды JIT открыли, вот тогда Net компиляторы в натив начали бы плодится как грибы.


Очень вряд ли. К примеру дженерики без JIT не реализуемы принципиально.
... << RSDN@Home 1.1.4 beta 7 rev. 454>>
AVK Blog
Re[49]: Создание игр на managed-языках
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 14.05.05 15:20
Оценка: :))) :)))
WH>нажимаю пару кнопок и получаю
WH>
WH>        private float Foo(int i, string s)
WH>        {
WH>            throw new NotImplementedException();
WH>        }
WH>

WH>красота

Столько сложностей и всё ради того, чтобы получить ошибку времени выполнения!
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[52]: Создание игр на managed-языках
От: GlebZ Россия  
Дата: 14.05.05 15:21
Оценка:
Здравствуйте, AndrewVK, Вы писали:

GZ>>PS: вот если бы они коды JIT открыли, вот тогда Net компиляторы в натив начали бы плодится как грибы.


AVK>Очень вряд ли. К примеру дженерики без JIT не реализуемы принципиально.

Я говорил только о компиляции CLI под различные процы и операционки. Ну я думаю, и качество компиляторов и их оптимизаторов при этом быстро бы повысилось.

С уважением, Gleb.
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[55]: Python vs C#
От: Cyberax Марс  
Дата: 14.05.05 15:21
Оценка:
Gaperton wrote:

> <http://arxiv.org/abs/cs.PL/0409016&gt;WH&gt;А отладчик и автокомплит на

> этом DSL работать будут?
> А ты пробовал когда-нибудь встроить в свою программу среду разработки
> от MS и сделать из этого DSL? Хотя бы специально для этого
> предназначенный Visual Basic for Applications? А ты попробуй.

Я пробовал. Все делается весьма просто — экспортируются свои объекты в
контекст VBA и все работает. Что характерно, работает без проблем —
отлаживать и писать код для автоматизации в VBA очень удобно.

> Тогда понятно станет, почему большинство производителей предпочитают

> так не делать, не покупаясь на замануху вроде отладчика и
> автокомплита. Все эти мульки в результате проще самому написать.

Агащаз. Даже отладчик типа VBAшного — это недели работы, автокомплит и
среда разработки — месяцы.

> Кстати, предупреждая ответы в духе "а вот .NET" — проект Visual Studio

> for Applications.NET *свернут *осенью прошлого года. Нет никакого
> дотнета . А прежде чем предлагать с каждой копией продукта тащить
> полноценный VS.NET

Мы спрашивали у МС — нам сказали, что по VSIP можно будет поставлять
урезанную Студию. А те же VS Express вполне себе маленькие по объему.

> подумайте о том, как это будет лицензироваться и сколько будет стоить

> вашему клиенту.

$10000 на компанию — вполне нормальная цена.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[46]: Создание игр на managed-языках
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 14.05.05 15:35
Оценка:
FR>>>Раньше и для си был lint очень похож на PyCheker.
WH>>Вот только когда пишешь на С++ потребности во всяких lint'ах почемуто не возникает. Может из-за статической типизации?

FR>Нет, сейчас компиляторы просто стали умнее и выдают намного больше предупреждений, так что lint уже просто не нужен.


Не знаю, чем раньше lint занимался, но lint в VW ST (называемый Code Critic) выдаёт предупреждения при использованию некоторых конструкций (напр. переопределено "=", но не "hash"; переменная объекта перекрыта временной переменной; слишком длинный метод и пр.). слыхал, что такая штука есть и в IDEA. Так что, думаю, что нужен
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[47]: Создание игр на managed-языках
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 14.05.05 15:35
Оценка:
Здравствуйте, Cyberax, Вы писали:
C>Переносимый вариант (Mono) выйдет через пол-года.

Интересно, чем всё закончится. Как я понимаю, то у господина деИказы с доведением до ума начатых проектов не очень.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[52]: Создание игр на managed-языках
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 14.05.05 15:35
Оценка:
E>А про какие аварии вообще идет речь?

E>Я говорил об Ариан 5, который при старте взорвался.

E>Еще был, кажется, MarsExplorer, который врезался в марс из-за того, что в модуле подлета все считалось в одних единицах, а в модуле посадки в других. Интересно, на чем этот софт был написан.
E>Еще был какой-то случай, когда в программе на Фортране при написании константы вместо десятичной точки поставили запятую.

А один военный корабль вообще на буксире тащить пришлось. Из-за деления на ноль
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[51]: Создание игр на managed-языках
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 14.05.05 15:39
Оценка:
WH>Да в питоне все обобщенное ибо типизация динамическая вот собственно и все. Вот и конец рефакторингу.

Занятно, что, как и конец, начало у рефакторинга с динамической типизации. Диалектика.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[56]: Python vs C#
От: Gaperton http://gaperton.livejournal.com
Дата: 14.05.05 15:41
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Gaperton wrote:


>> <http://arxiv.org/abs/cs.PL/0409016&gt;WH&gt;А отладчик и автокомплит на

>> этом DSL работать будут?
>> А ты пробовал когда-нибудь встроить в свою программу среду разработки
>> от MS и сделать из этого DSL? Хотя бы специально для этого
>> предназначенный Visual Basic for Applications? А ты попробуй.

C>Я пробовал. Все делается весьма просто — экспортируются свои объекты в

C>контекст VBA и все работает. Что характерно, работает без проблем —
C>отлаживать и писать код для автоматизации в VBA очень удобно.

А ты попробуй движок VBA в многопоточном режиме (в этом режиме свои объекты ты туда вставить не сможешь).
Кстати, VB — это не DSL. Чтобы сделать его похожим на DSL, попробуй добавить препроцессор и постпроцессор (интересно, как ты вообще это сделаешь, сохранив встроенный редактор и отладчик). Попробуй именить тулбары, меню. Сделать полноценное решение с DSL при помощи VBA настолько трудоемко, что сравнимо с написанием всего с нуля.

>> Тогда понятно станет, почему большинство производителей предпочитают

>> так не делать, не покупаясь на замануху вроде отладчика и
>> автокомплита. Все эти мульки в результате проще самому написать.

C>Агащаз. Даже отладчик типа VBAшного — это недели работы, автокомплит и

C>среда разработки — месяцы.

Eclipse.
Re[43]: Создание игр на managed-языках
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 14.05.05 15:42
Оценка: +1
G>>Да правда чтоли? VB со своим IDispatch, JScript, PHP, Perl и ваш любимый C# c контейнерами Object-ов — типизированны по самое нехочу?
WH>С++, C#2...

Можно услышать о применении майнстримового C#2?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[55]: Python vs C#
От: Cyberax Марс  
Дата: 14.05.05 15:43
Оценка:
WFrag wrote:

> C>Говорили "любой", а выходит что кроме замен на инфиксные операции и

> C>переименований некоторых функций, дальше вся синтаксическая гибкость
> C>Лиспа и не идет.
> Почему? Хитрость простая. Текст на DSL-языке — это просто строка,
> макрос может сделать с ней (в compile-time) все, что угодно — в том
> числе распарсить язык и отобразить в "скобочки" (которые в свою
> очередь разворачиваются другими макросами в низкоуровневый код).

И какие в этом преимущества? Точно так же, берем обычный
рекурсивно-нисходящий парсер, пишем для него грамматику DSLя и
транслятор в целевой язык (Java, например). Трудозатраты примерно такие же.

> C>И причем здесь ORM? Просто так, чтобы к слову? В той же Hibernate'е XML

> C>используется только для того, чтобы задавать настройки, то есть в
> C>качестве такого продвинутого ini-файла. Лисп там ну абсолютно никакой
> C>разницы бы не сделал.
> Настройки — это тоже язык.

Да, называется XML.

> Только в случае Java нам остается только интепретатор — загрузчик

> настроек. А в случае LISP мы могли бы его компилировать (вернее сумму
> настройки+модельные классы+бизнес логика) получая исключительно
> исполняемый код.

Вы всерьез считаете, что генерация прокси-классов и метаинформации из
описания — это самая большая часть ORM?

В Hibernate'е, кстати, можно mapping задавать прямо из Java-кода в
runtime'е при желании.

> И не нужно грузить настройки — они "вкомпилируются" в программу

> (Partial Evaluation во всей красе).

А что это даст, необходимость перекомпиляции при изменении настроек?
Спасибо, не надо.

> То есть даем на вход модельные классы+настройки (маппинг), получаем

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

Есть и для Java такие системы. В JDO, например, специальный компилятор
по mapping'у инструментирует байт-код скомпилированных классов.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[56]: Python vs C#
От: Gaperton http://gaperton.livejournal.com
Дата: 14.05.05 15:44
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


G>>А ты пробовал когда-нибудь встроить в свою программу среду разработки от MS и сделать из этого DSL?

WH>Именно этим я сейчас и занимаюсь. При том вполне успешно.
G>>Хотя бы специально для этого предназначенный Visual Basic for Applications? А ты попробуй. Тогда понятно станет, почему большинство производителей предпочитают так не делать, не покупаясь на замануху вроде отладчика и автокомплита. Все эти мульки в результате проще самому написать.
WH>Написать аналог ReSharpera? Да вы батенька .
А ReSharper сможет работать с вашим собственным языком и достанется вашим клиентам бесплатно? Вы, батенька, вообще в курсе, что такое DSL? Кстати, я работая на С++ прекрасно обхожусь без вашего ReSharpera. И неудержимой тяги писать его аналог не испытываю.

G>>Кстати, предупреждая ответы в духе "а вот .NET" — проект Visual Studio for Applications.NET свернут осенью прошлого года. Нет никакого дотнета . А прежде чем предлагать с каждой копией продукта тащить полноценный VS.NET подумайте о том, как это будет лицензироваться и сколько будет стоить вашему клиенту.

WH>0$ Ибо есть есть экспресы.
Это, конечно, меняет дело.
Re[50]: Создание игр на managed-языках
От: Cyberax Марс  
Дата: 14.05.05 15:46
Оценка:
FR wrote:

> C>А _откуда_ PyChecker узнает, что some_external_function возвращает

> C>переменную типа Test? Язык-то динамический.
> Сначала он импортирует все модули и все что можно проанализировать
> анализирует,
> Потом все таки запускает программу, и тоже анализирует.

Это значит "вернутся на клетку 1", то есть мы не можем убедится в
корректности программы пока ее не запустим.

> C>Нету его там в нормальном. Есть name-based polymorphism, который по

> сути
> C>тоже есть в шаблонах С++, это используется для CRTP (Curously Recurring
> C>Template Pattern).
> однако это не мешает легко писать на питоне обобщенный и повторно
> используймый код

А необобщенный (чиста конкретный) код на Python'е писать можно?

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

> В современных играх скрипты используются для разных целей, в том числе
> и для создания умных ini, и для описания логики игровых объектов и для
> реализации GUI.

Да, поэтому и важна их отлаживаемость и удобство написания.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[57]: Python vs C#
От: Cyberax Марс  
Дата: 14.05.05 17:35
Оценка:
Gaperton wrote:

> C>Я пробовал. Все делается весьма просто — экспортируются свои объекты в

> C>контекст VBA и все работает. Что характерно, работает без проблем —
> C>отлаживать и писать код для автоматизации в VBA очень удобно.
> А ты попробуй движок VBA в многопоточном режиме (в этом режиме свои
> объекты ты туда вставить не сможешь).

А нафиг? Мне хватает однопоточного.

> Кстати, VB — это не DSL. Чтобы сделать его похожим на DSL, попробуй

> добавить препроцессор и постпроцессор (интересно, как ты вообще это
> сделаешь, сохранив встроенный редактор и отладчик). Попробуй именить
> тулбары, меню. Сделать *полноценное *решение с *DSL *при помощи VBA
> настолько трудоемко, что сравнимо с написанием всего с нуля.

VBA — это сам по себе DSL, с достаточно широким доменом.

> C>Агащаз. Даже отладчик типа VBAшного — это недели работы, автокомплит и

> C>среда разработки — месяцы.
> Eclipse.

Ява не умеет OLE, например.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[58]: Python vs C#
От: Gaperton http://gaperton.livejournal.com
Дата: 14.05.05 18:21
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>Gaperton wrote:


>> C>Я пробовал. Все делается весьма просто — экспортируются свои объекты в

>> C>контекст VBA и все работает. Что характерно, работает без проблем —
>> C>отлаживать и писать код для автоматизации в VBA очень удобно.
>> А ты попробуй движок VBA в многопоточном режиме (в этом режиме свои
>> объекты ты туда вставить не сможешь).

C>А нафиг? Мне хватает однопоточного.

Тогда конечно все проще, везет тебе. Еще ложка дегтя — это работает очень медленно — насколько я помню VBA в этом режиме интерпретирующий. Впрочем, в этом смысле должно быть не хуже Питона. Ну и, ктати, если тебе в будущем понадобится несколько инстансов VBA runtime в одном процессе — придется вешаться.

>> Кстати, VB — это не DSL. Чтобы сделать его похожим на DSL, попробуй

>> добавить препроцессор и постпроцессор (интересно, как ты вообще это
>> сделаешь, сохранив встроенный редактор и отладчик). Попробуй именить
>> тулбары, меню. Сделать *полноценное *решение с *DSL *при помощи VBA
>> настолько трудоемко, что сравнимо с написанием всего с нуля.

C>VBA — это сам по себе DSL, с достаточно широким доменом.

Ну какой это Domain Specific Language. Это обычный General Purpose Visual Basic, которому ты можешь поправить объектную модель. И она там, кстати, убога — нет наследования реализации. Что очень и очень плохо. А препроцессор и постпроцессор кода ты вставить туда не можешь, т.е. ты не можешь изменить вид программы и в общем случае заставишь пользователя делать ручками больше работы. Какой там DSL... Для простых задач это все канает, но для реализации серьезного DSL это не подходит.

>> C>Агащаз. Даже отладчик типа VBAшного — это недели работы, автокомплит и

>> C>среда разработки — месяцы.
>> Eclipse.
C>Ява не умеет OLE, например.
"OLE, OLE — это просто слезы" (с). А оно нужно, если пишешь на яве? Но если очень хочется, то, например,
1) Есть COM-CORBA прокси. А CORBA ява умеет.
2) Есть прямой Java-.NET interop от сторонних производителей.
3) В конце концов есть нативные интерфейсы, через которые можно все. Только нафига?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.