Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
bodrich
98 / 88 / 2
Регистрация: 20.06.2010
Сообщений: 954
Записей в блоге: 16
Завершенные тесты: 1
#1

Что можно сделать с проектом ? - C++

11.10.2015, 23:38. Просмотров 331. Ответов 17
Метки нет (Все метки)

В данный момент поддерживаю одну старую игру (игра полностью некоммерческая, код открыт, онлайн примерно 50-60 человек, написан на си/c++, поддерживать есть необходимость только серверную часть). Что имеется.
1) Много кода (200к+ строк кода, для меня это очень много)
2) Некоторые участки кода не обновлялись с !1991 года!
3) За это время над кодом успело поработать очень много людей, которые далеки от программирования, что привело к огромному количество быдлокода (например, функции, никем не комментируемые и части которых разбросаны по множеству файлов)
4) Документации никакой естественно нет.
5) К проекту подключен boost и активно там юзается
6) К проекту подключен python.

В связи с этим возникает несколько вопросов
1) Есть какие-нибудь инструменты для рефакторинга кода, дабы немного улучшить ситуацию
2) Есть ли какие-нибудь инструменты, которые позволят обернуть (опять же, автоматически или в полуавтоматическом варианте) си++ функции для питона ? (дабы из питона их можно было потом дергать)

Не по теме:

Чисто для интереса, сколько будет стоить перевод всего этого с плюсов на какой-нибудь скриптовый язык типа питона ?

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2015, 23:38     Что можно сделать с проектом ?
Посмотрите здесь:

Как можно сделать такое? (Автоматическое нажатие клавиш и все что с этим связанно) C++
можно сделать так чтоб можно было использовать ifstream? C++ Builder
C++ Что можно сделать при помощи Shell Extensions?
Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода C++
C++ Builder IdHTTP и все, что только можно с ним сделать!
C++ можно ли создать такой именованый пейп , что по нему можно было передавать данные по сети?
C++ Друзья, подскажите, говорят, что можно поля класса инициализировать в момент объявления класса. Как это сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fulcrum_013
648 / 716 / 72
Регистрация: 14.12.2014
Сообщений: 5,601
Завершенные тесты: 3
11.10.2015, 23:48     Что можно сделать с проектом ? #2
Цитата Сообщение от bodrich Посмотреть сообщение
Есть какие-нибудь инструменты для рефакторинга кода, дабы немного улучшить ситуацию
1) я так думаю переписать с нуля будет проще чем рефакторить. Не, вообще просто интересно чем там занимаются аж 200k+ кода в серверной части.
2)Наверное это участки очень хорошего кода.
3) Вот эту часть скорее всего и надо выкинуть а потом сделать с нуля. Я так думаю что при таких раскладах 80% а то и больше кода делают 10% функциональности
4) Ну это понятно. Я так думаю что если бы не 3 то код бы был лучше документации.
5) Мода.
6) А это еще зачем? А ну да, тоже мода.

Не по теме:

Цитата Сообщение от bodrich Посмотреть сообщение
Чисто для интереса, сколько будет стоить перевод всего этого с плюсов на какой-нибудь скриптовый язык типа питона ?
Я так думаю дорого. Особенно в плане роста потребной мощности сервера.

bodrich
12.10.2015, 02:44  [ТС]
  #3

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Я так думаю дорого. Особенно в плане роста потребной мощности сервера.
Не проблема. Сейчас сервер крутится на VPS стоимостью в полтысячи рублей и пожирает 10-20% cpu и столько же озу.

Fulcrum_013
648 / 716 / 72
Регистрация: 14.12.2014
Сообщений: 5,601
Завершенные тесты: 3
12.10.2015, 02:58     Что можно сделать с проектом ? #4

Не по теме:

Цитата Сообщение от bodrich Посмотреть сообщение
Не проблема. Сейчас сервер крутится на VPS стоимостью в полтысячи рублей и пожирает 10-20% cpu и столько же озу.
Это в среднем. А в пике? И какой смысл делать на скриптах если ек подразумевается кросс-платформенность, при этом оставлять большую часть нативной?


Краем глаза можно взглянуть что там за проект? Просто интересно что можно раздуть до 200k строк серверной части.
И еще вопрос - как строки считали? Если это та цифра которая показывается при компиляции, то это далеко не тот объем кода который лежит в файлах. Это количество строк как в обработанных препроцессором ваших фалах + количество строк в обработанных хидерах подключаемых библиотек, в случае библиотек шаблонов - в развернутых шаблонах. Для сравнения современные фрэймверки на пустой форме показывают 1,7 млн строк.
bodrich
98 / 88 / 2
Регистрация: 20.06.2010
Сообщений: 954
Записей в блоге: 16
Завершенные тесты: 1
12.10.2015, 08:44  [ТС]     Что можно сделать с проектом ? #5
И еще вопрос - как строки считали?
cat *.cpp *.hpp .h | wc -l
А в пике?
Немногим больше. Сервер очень мало кушает. На этом vps ещё крутится полноценная копия + все это дело собирается.
И какой смысл делать на скриптах если ек подразумевается кросс-платформенность, при этом оставлять большую часть нативной
Скорость разработки. Хочется много чего закодить, но мне тупо времени не хватает, с учётом того, что я плюсы знаю плохо (изучал на первом курсе универа, после этого перешёл на шарп и питон).
Ссылка на репозиторий https://bitbucket.org/bylins/mud
Fulcrum_013
648 / 716 / 72
Регистрация: 14.12.2014
Сообщений: 5,601
Завершенные тесты: 3
12.10.2015, 09:01     Что можно сделать с проектом ? #6
Ужасть... она даже не ООП-ная... да и по коду... там 90% как минимум захардкожено. При выносе всего этого в датапак код должен сократится катастрофически.
bodrich
12.10.2015, 11:35  [ТС]
  #7

Не по теме:

Так сколько примерно будет стоит перевод всего этого ужаса на питон ? И как я понимаю, стоимость приведение всего этого в божеский вид на тех же плюсах, обойдется еще дороже ?

Avazart
7062 / 5239 / 261
Регистрация: 10.12.2010
Сообщений: 23,037
Записей в блоге: 17
12.10.2015, 11:58     Что можно сделать с проектом ? #8
Цитата Сообщение от bodrich Посмотреть сообщение
Так сколько примерно будет стоит перевод всего этого ужаса на питон ? И как я понимаю, стоимость приведение всего этого в божеский вид на тех же плюсах, обойдется еще дороже ?
А смысл все переводить на питон?
Как я понимаю все что можно было уже вынесено на питон.
Думаю причесать плюсовый код логичнее, хотя сомневаюсь что такое можно доверять фрилансеру, хотя конечно смотря какому...
Т.е я имею ввиду что если каждый раз и за каждую доработку/правку будет браться другой фрилансер нет гарантий что не получите тот самый хардкор.
Так что лучше что бы проектом занимался один человек и желательно заинтересованный человек, а не просто как "сезонный" работник.

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ужасть... она даже не ООП-ная...
При чем тут это ...



Добавлено через 5 минут
Цитата Сообщение от bodrich Посмотреть сообщение
1) Есть какие-нибудь инструменты для рефакторинга кода, дабы немного улучшить ситуацию
Некоторые среды разработки уже включают средства для рефакторинга, например QtCreator
bodrich
98 / 88 / 2
Регистрация: 20.06.2010
Сообщений: 954
Записей в блоге: 16
Завершенные тесты: 1
12.10.2015, 12:08  [ТС]     Что можно сделать с проектом ? #9
Цитата Сообщение от Avazart Посмотреть сообщение
А смысл все переводить на питон?
Скорость разработки
Цитата Сообщение от Avazart Посмотреть сообщение
Как я понимаю все что можно было уже вынесено на питон.
К сожалению, нет. Только небольшая часть базового функционала.
Avazart
7062 / 5239 / 261
Регистрация: 10.12.2010
Сообщений: 23,037
Записей в блоге: 17
12.10.2015, 12:24     Что можно сделать с проектом ? #10
Цитата Сообщение от bodrich Посмотреть сообщение
Скорость разработки
А снижение скорости из за "скриптовости" ?
Скорость разработки больше зависит от квалификации разработчика и точного видения конечной цели, а не от языка.

Цитата Сообщение от bodrich Посмотреть сообщение
К сожалению, нет. Только небольшая часть базового функционала.
Ну так что мешает продолжить выносить?
Выносят как правило "часто изменяемое поведение" описание комнат,шмоток итп а не полностью "все".
bodrich
98 / 88 / 2
Регистрация: 20.06.2010
Сообщений: 954
Записей в блоге: 16
Завершенные тесты: 1
12.10.2015, 13:12  [ТС]     Что можно сделать с проектом ? #11
Цитата Сообщение от Avazart Посмотреть сообщение
А снижение скорости из за "скриптовости" ?
Производительность в данном случае не так важна, даже если упадет раз в 10.
Цитата Сообщение от Avazart Посмотреть сообщение
Скорость разработки больше зависит от квалификации разработчика и точного видения конечной цели, а не от языка.
Хорошо квалифицированные разработчики C++ не имеются. Когда я начинаю писать под этот проект что-то, я начинаю думать, как легко и лаконично это писалось бы на питоне, и как тяжело и нудно пишется на плюсах. Да, я не могу особо в плюсы, и никто из текущей администрации проекта особо не могет. Согласитесь, на скриптовых языках такие вещи писать легче и быстрее, если, конечно же, вы до этого не писали на плюсах десяток лет.
Цитата Сообщение от Avazart Посмотреть сообщение
Ну так что мешает продолжить выносить?
Тут такая дилемма. Для 90% создания игрового мира хватает встроенного скриптового языка (да, там есть еще один встроенный язык, очень простой, чем-то похож на паскаль). А для оставшихся 10% есть плюсы. Вручную все оборачивать у меня сил не хватит, а если оборачивать по степени необходимости, то придется прыгать между плюсами. Я бы хотел примерно как здесь https://www.openhub.net/p/anaria/factoids (скилы, перки, спелы - вся механика на питоне).
Avazart
7062 / 5239 / 261
Регистрация: 10.12.2010
Сообщений: 23,037
Записей в блоге: 17
12.10.2015, 13:42     Что можно сделать с проектом ? #12
Цитата Сообщение от bodrich Посмотреть сообщение
Согласитесь, на скриптовых языках такие вещи писать легче и быстрее, если, конечно же, вы до этого не писали на плюсах десяток лет.
Не соглашусь.
Я пишу на плюсах, а когда пишу на питоне думаю как бы это легко было на плюсах... это вопрос привычки умений и мышления.

Добавлено через 3 минуты
Цитата Сообщение от bodrich Посмотреть сообщение
встроенного скриптового языка (да, там есть еще один встроенный язык, очень простой, чем-то похож на паскаль).
Lua ?
alkagolik
Заблокирован
12.10.2015, 19:12     Что можно сделать с проектом ? #13
Цитата Сообщение от Avazart Посмотреть сообщение
Lua ?
DSL
bodrich, см ЛС
ct0r
Игогошка!
1760 / 662 / 42
Регистрация: 19.08.2012
Сообщений: 1,261
Завершенные тесты: 1
12.10.2015, 19:22     Что можно сделать с проектом ? #14
Цитата Сообщение от bodrich Посмотреть сообщение
Есть какие-нибудь инструменты для рефакторинга кода, дабы немного улучшить ситуацию
А в чем конкретно проблемы с такой ситуацией? Ты их пока не перечислил. Вижу тольку личную хотелку вида "я не хочу писать на плюсах, а хочу на питоне".
Fulcrum_013
648 / 716 / 72
Регистрация: 14.12.2014
Сообщений: 5,601
Завершенные тесты: 3
12.10.2015, 20:59     Что можно сделать с проектом ? #15
Цитата Сообщение от bodrich Посмотреть сообщение
скилы, перки, спелы - вся механика на питоне
Ну не знаю как спелы на 100%, но по моему скилы и особенно перки на 100% должны быть в датапаке.
bodrich
98 / 88 / 2
Регистрация: 20.06.2010
Сообщений: 954
Записей в блоге: 16
Завершенные тесты: 1
13.10.2015, 05:10  [ТС]     Что можно сделать с проектом ? #16
Цитата Сообщение от Avazart Посмотреть сообщение
Lua ?
Неа, язык разрабатывался под движок. Из возможностей там только переменные, операции над ними и блок if-else
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну не знаю как спелы на 100%, но по моему скилы и особенно перки на 100% должны быть в датапаке.
Это все наследие 94 года, как тогда ядро сделали, так сейчас примерно и осталось.
Fulcrum_013
648 / 716 / 72
Регистрация: 14.12.2014
Сообщений: 5,601
Завершенные тесты: 3
13.10.2015, 05:34     Что можно сделать с проектом ? #17
Цитата Сообщение от bodrich Посмотреть сообщение
Из возможностей там только переменные, операции над ними и блок if-else
переход есть? ну в смысле goto? если есть то язык Тьюринг-полный и обеспечивает возможность любых вычислений.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2015, 06:29     Что можно сделать с проектом ?
Еще ссылки по теме:

C++ Сколько бутылок воды можно выпить на n грн, учитывая, что пустые бутылки можно сдавать, и на полученные деньги приобрета
Можно ли сделать так, что окно программы по умолчанию появлялось на втором мониторе (secondary display) C++ WinAPI
Что сделать что бы консольная строка разбивалась на слова для перевода? C++
Найти НОК и НОД , и что бы можно было ввести до 10 чисел , как это сделать на с++? C++
Что можно сделать, что бы конструктор вызывался один раз при агрегировании? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
bodrich
98 / 88 / 2
Регистрация: 20.06.2010
Сообщений: 954
Записей в блоге: 16
Завершенные тесты: 1
13.10.2015, 06:29  [ТС]     Что можно сделать с проектом ? #18
Goto есть. Но нету к примеру массивов, нельзя создавать свои функции/процедуры.
Yandex
Объявления
13.10.2015, 06:29     Что можно сделать с проектом ?
Ответ Создать тему
Опции темы

Текущее время: 05:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru