Пушыстый (_winnie) wrote,
Пушыстый
_winnie

Categories:

Скрипты на С++

<UPDATED>:
длинное обсуждение, что можно и нельзя на плюсах - http://www.gamedev.ru/forum/?group=0&topic=20087 - резюме такое: можно всё, что можно и в скриптах.
ищо ссылка - http://www.gamedev.ru/forum/?group=0&topic=20683

Тезис:

Единственное преимущество "скриптовых" языков - это то, что для них не надо писать пуленепробиваемые reference-counted copy-on-write контейнеры и прочий безопасный пушыстый стафф для дизайнеров уровней, которые не должны знать что такое "память", "байт", "malloc", "конструктор копирования". Еще можно из преимуществ можно назвать реальный, а не эмулируемый microthreading. Для некоторых приложений так же важно, что бы скрипт их скачаного из интернета уровня не мог отформатировать винчестер и послать всем твоим друзьям по почте. Но на это разработчики обычно забивают - некорректно записаный SaveGame может сделать тоже самое. Уязвимости были даже в mp3 и jpeg-файлах.

Мудрый пост Семёна:


Я все-таки хочу подчеркнуть всякие причины, по которым мне не хотелось бы использовать С++ как скрипт.
1) Таки медленно пишется код по сравнению со скриптовыми решениями. GC, принципиальна невозможность выхода за пределы массивов, проблемы с указателями и т.д. - это на самом деле неоценимо. _Winnie, ты же чувствуешь себя умным, когда на С++ пишешь? Я устал повторять, что это плохо. Нужно быть совсем тупым. Тупеть от каждой строчки. Ну и традиционно упомяну рефакторинг ;)
2) Скрипты достигают очень приличных объемов кода. Мегабайт, скажем. Приличных модулей кода, на которых компиляция С++ совсем не мгновенна.
3) Пуленепробиваемая безопасность - это таки аргумент. Потому что логика "если все равно бывают баги, то давайте вообще о них не думать" - она порочна.


А так - Винни толкает разумную телегу. Так можно делать, и, боюсь, с большими объемами скриптового кода на Плейстейшене и придется. В остальных случаях - желательно при этом быть С++-зилотом.

</UPDATED>


aruslan как-то жаловался, что его за####ает "мгновенная природа С++"

В споре скриты vs С++ я привел такой код:
только придется писать не
void Proga()
{
  printf("hello");
  int i = 10;

  Sleep(10000);
  printf("world %d", i);

}
а что-то вроде
struct Proga
{
  int i;
  void phase1()

  {
    printf("hello");
    i = 10;

    get_scrip_manager()->add_phase(10000, &this, &Proga::phase2);

  }

  void phase2()
  {
    printf("world, %d", i);

  }
}




Вот тут интересное развитие/альтернатива:
http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments