Что-то в коде GUI этого скрипта странное творится. Работает как-то через раз (!), и если работает, то сразу после получения результатов окно закрывается. Окно с консолькой при этом продолжает висеть в обоих случаях.
Бинарник не брал, скачал master.zip с гитхаба.
Python 3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:35:05) [MSC v.1600 64 bit (AMD64)] on win32
Проблема ещё и в Java, где нет легковесных структур. Конечно, можно MotionEvent передавать в виде десятка аргументов, но это тоже нехорошо (по многим причинам).
> Курсор баз данных, теперь может использоваться в качестве контекст менеджера:
А в коде, который написан под этим утверждением, context manager даже и не пахнет.
Например, в стандартной библиотеке collections.named_tuple реализован именно через eval (формалньно — через exec, но невелика разница). hg.python.org/cpython/file/ab5e2b0fba15/Lib/collections/__init__.py#l239
Наверное, более чистым способом было бы аккуратно собрать AST-дерево и скомпилировать его, благо возможности для того есть. Но это сложнее, и, возможно, даже медленнее.
Ключевое отличие: shell builtin (который от внешней команды отличается разве что скоростью) vs. shell keyword (который значительно меняет синтаксис и семантику).
Я на подмонтированный с помощью NTFS-3G терабайтный торрент качал, никаких проблем вообще не было. Но это FUSE, и немного не то же самое, что драйвер целиком в ядре.
Чем такую жесть писать и ещё потом отлаживать, я лучше напишу скрипт на Python. И пофиг, что он будет длиннее, уж по крайней мере будет понятно, что происходит.
Если же есть условие использовать только то, что в системе есть «из коробки», то JScript сойдет. Конечно, JavaScript и его диалекты — не фонтан, но всяко лучше, чем cmd.
Добавлю, что хотя Tornado внутри использует лапшу из callback'ов, некоторая поддержка сопрограмм (coroutine) там тоже есть: www.tornadoweb.org/en/stable/gen.html.
Есть опасение, что некоторые вещи на C++ писать будет не очень весело. Уж очень легко ошибиться и выстрелить себе в ногу. UnrealScript же многое прощал — ну загадит лог-файл сообщениями «Accessed none», ну и всё. Поскольку на территорию undefined behaviour мы не заступаем, можно спокойно разобраться, где ошибка в логике.
В UnrealScript есть удобные конструкции для работы с репликацией (блок replication, server/client-функции, repnotify и т.д.), с конфигами (config/globalconfig), с состояниями и многое другое. Я ещё не видел UE4, может они и сделали всё это в C++ на достойном уровне. Но сомнения есть.
Ещё один вопрос: как с модами быть? Допустим, разрабатываем мы некую игру, похожую на UT. Как сделать автоматически скачиваемые с сервера моды так, чтобы не было угрозы безопасности? Нельзя же просто выполнять чужой машинный код.
Blueprints — это, скорее, наследник Kismet. UnrealScript был ориентирован на программистов. Не на низкоуровневых, а достаточно высокоуровневых геймплейных и UI-программистов, но всё же программистов.
Blueprints же ориентирован на тех, кто программировать не умеет. Вот вы ссылаетесь на Hourences, он в своей презентации так и говорил (не дословно): «я ни разу не программер, но теперь я могу сделать свою игру, не написав ни строчки кода, и это офигенно».
Визуальное программирование плохо масштабируется. Опять-таки Hourences в своей презентации показывал, что более-менее сложная логика в Blueprints превращалась в месиво. Но для прототипирования сойдет, конечно.
Вот, кстати, да. Если в UnrealScript поддержка сетевых игр требовала, в большинстве случаев, лишь аккуратных блоков replication, то это в C++ рискует превратиться в страшную шаблонную жесть.
Бинарник не брал, скачал master.zip с гитхаба.
Python 3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:35:05) [MSC v.1600 64 bit (AMD64)] on win32
А ничего, что эти технологии мешают не просто так, а с конкретной целью?
А в коде, который написан под этим утверждением, context manager даже и не пахнет.
Наверное, более чистым способом было бы аккуратно собрать AST-дерево и скомпилировать его, благо возможности для того есть. Но это сложнее, и, возможно, даже медленнее.
Если же есть условие использовать только то, что в системе есть «из коробки», то JScript сойдет. Конечно, JavaScript и его диалекты — не фонтан, но всяко лучше, чем cmd.
В UnrealScript есть удобные конструкции для работы с репликацией (блок replication, server/client-функции, repnotify и т.д.), с конфигами (config/globalconfig), с состояниями и многое другое. Я ещё не видел UE4, может они и сделали всё это в C++ на достойном уровне. Но сомнения есть.
Ещё один вопрос: как с модами быть? Допустим, разрабатываем мы некую игру, похожую на UT. Как сделать автоматически скачиваемые с сервера моды так, чтобы не было угрозы безопасности? Нельзя же просто выполнять чужой машинный код.
Blueprints же ориентирован на тех, кто программировать не умеет. Вот вы ссылаетесь на Hourences, он в своей презентации так и говорил (не дословно): «я ни разу не программер, но теперь я могу сделать свою игру, не написав ни строчки кода, и это офигенно».
Визуальное программирование плохо масштабируется. Опять-таки Hourences в своей презентации показывал, что более-менее сложная логика в Blueprints превращалась в месиво. Но для прототипирования сойдет, конечно.