Здравствуйте, savitar, Вы писали:
S>еще вариант языка: Go (golang)? или это уже слишком...
Нет, тоже вариант. Вопрос в том, насколько легко найти разработчиков на этом языке.
Здравствуйте, Lonely Dog, Вы писали:
LD>Добрый день!
LD>Стоит задача разработки кроссплатформенного сервера. Требуется работа на Windows и Linux. Взаимодействие с базами данных, LDAP-каталогами (вместо баз данных), нативным кодом. Вот думаю, на чем лучше писать. LD>1. С# — все задачи покрываются кроме поддержки Linux. Нет уверенности в том, что Mono достаточно стабилен. С другой стороны, я немнлого знаю .NET, мне будет легче контролировать разработку. LD>2. C++ — У меня вообще нет опыта кроссплатформенной разработки. Т.е. нет уверенности в том, что будут использоваться правильные библиотеки, подходы и пр. Кроме того, работа с базами данных на C# проще. Да и все остальное делается быстрее. LD>3. Java — наверное лучший выбор. Вот только я Java вообще не знаю. Никогда ничего не писал. Т.е. на первых порах надо будет ее осваивать. И будет сложно контролировать команду. LD>4. Python — мы не готовы отдавать исходный код. Возможно, его можно обфусцировать. Но опять же, Питон я почти не знаю. И какие там есть либы, подходы, инструменты не в курсе.
LD>Коллеги, может вы что-нибудь подскажите?
LD>PS: Не знаю, возможно мой подход к выбору технологий вообще не верен? Какая разница, в чем у меня есть опыт? На уровне архитектуры, структуры базы данных и внешнего API, я смогу разобраться с чем угодно. Ну, мне хочется верить в это . Да и в текущей команде есть люди с большим опытом разработки в разных областях. Если что, они помогут. Просто под этот новый сервер мы будем набирать еще народ (3-4 человека). И хочется как-то определиться с тем, кто нам нужен.
А что ты вообще знаешь? C# нормально не знаешь, С++ не знаешь, Java не знаешь, пайтон не знаешь. Ты — Windows-программист с опытом С++ и небольшим опытом C#? Моё мнение — если задача несложная — пиши на джаве. Её легко выучить до уровня, достаточного для написания небольших приложений. Документации огромное количество. Проблем с кроссплатформенностью — 0. Советую именно её.
Re: Кроссплатформенный сервер
От:
Аноним
Дата:
02.02.14 16:32
Оценка:
Здравствуйте, Lonely Dog, Вы писали:
LD>Добрый день!
LD>Стоит задача разработки кроссплатформенного сервера. Требуется работа на Windows и Linux. Взаимодействие с базами данных, LDAP-каталогами (вместо баз данных), нативным кодом. Вот думаю, на чем лучше писать.
... LD>Коллеги, может вы что-нибудь подскажите?
Здравствуйте, vsb, Вы писали:
vsb>А что ты вообще знаешь? C# нормально не знаешь, С++ не знаешь, Java не знаешь, пайтон не знаешь. Ты — Windows-программист с опытом С++ и небольшим опытом C#?
Я — Windows-программист с 12-летним опытом, с уклоном в системные технологии MS: системные компоненты польззовательского режима (фильтры паролей, GINA, Credential Providers), Active Directory и пр., плюс куча всего другого из моей прикладной области. Плюс сертификаты Brainbench, Microsoft и пр.
Моё мнение — если задача несложная — пиши на джаве. Её легко выучить до уровня, достаточного для написания небольших приложений. Документации огромное количество. Проблем с кроссплатформенностью — 0. Советую именно её.
А писать не я буду. Писать будут другие. Моя роль на на проекте это требования, high-level дизайн и общее управление.
PS: За совет про Java спасибо. Остальное, мимо кассы.
Здравствуйте, Аноним, Вы писали:
А>Под твои задачи идеально подходит PHP
Гм, в эту сторону не думал. Считал, что PHP не подходит для серьезных разработок enterprise-уровня.
Здравствуйте, Lonely Dog, Вы писали:
LD>PS: За совет про Java спасибо. Остальное, мимо кассы.
Контролировать Java проблем не будет, думаю. С точки зрения архитектуры Java и С++ особо не отличаются. У С++ всякие мелкие особенности вроде контроля за владением объекта и тд, которые в Java не особенно актуальны, но в целом классы там и там одни и те же, интерфейсы там и там одни и те же, принципы построения архитектуры одни и те же, паттерны одни и те же. Код на Java С++ник может читать и оценивать на адекватность без какой-либо подготовки (кроме пары тонких моментов, которые по ходу дела быстро разбираются).
Основные моменты — правильный выбор фреймворков и больших библиотек. Ну тут можно ориентироваться на популярность и четко смотреть, для каких задач они предназначены и какие у них есть ограничения.
vsb>Контролировать Java проблем не будет, думаю. С точки зрения архитектуры Java и С++ особо не отличаются. У С++ всякие мелкие особенности вроде контроля за владением объекта и тд, которые в Java не особенно актуальны, но в целом классы там и там одни и те же, интерфейсы там и там одни и те же, принципы построения архитектуры одни и те же, паттерны одни и те же. Код на Java С++ник может читать и оценивать на адекватность без какой-либо подготовки (кроме пары тонких моментов, которые по ходу дела быстро разбираются). vsb>Основные моменты — правильный выбор фреймворков и больших библиотек. Ну тут можно ориентироваться на популярность и четко смотреть, для каких задач они предназначены и какие у них есть ограничения.
Вот именно. Смущает именно большой набор библиотек для Java. В которых я пока не ориентируюсь. Но пока планирую купить книжку по языку. А дальше видно будет.
Понимаю, что Java (и C#) похожи на C++. Но ведь везде есть свои нюасны и шишки, которые набиваются только с опытом.
В общем, решение уже практически принято. Сервер будем писать на Java. Админскую часть возм. тоже.
Всем спасибо за ответы и помощь.
Re[3]: Кроссплатформенный сервер
От:
Аноним
Дата:
06.02.14 10:35
Оценка:
Здравствуйте, Lonely Dog, Вы писали:
LD>Здравствуйте, Аноним, Вы писали:
А>>Под твои задачи идеально подходит PHP LD>Гм, в эту сторону не думал. Считал, что PHP не подходит для серьезных разработок enterprise-уровня.
Здравствуйте, Lonely Dog, Вы писали:
LD>Коллеги, может вы что-нибудь подскажите?
Всё зависит от состава будущей команды.
Если есть возможность найти высококлассных профессионалов в C++, то это будет самый эффективный вариант. В этом случае могу посоветоваться использовать для доступа к БД библиотечку SOCI, ну и Boost просто по всяким мелочам. С доступом к нативному коду тут вопросов естественно нет. Но этот вариант подходит только при наличие подобных профессионалов, а в случае каких-нибудь там студентов в роли исполнителей, это будет худшим вариантом.
Если же для разработки подразумевается использовать слабых специалистов, то оптимальнее всего будет Java. С библиотеками для БД и т.п. тут вообще вопросов нет и наверное самой нетривиальной частью будет взаимодействие с нативным кодом (JNI).
P.S. Я там понимаю, что проект всё же не из пары строк, иначе как раз небольшой Python скрипт был бы оптимальным. )))
Здравствуйте, savitar, Вы писали:
S>не знаю на счет обфускации, но давать только .pyc думая, что ты не даешь исходники, это очень наивно. это https://github.com/wibiti/uncompyle2 поможет развеять сомнения.
Java или C# в этом плане ничуть не лучше.
Re[3]: Кроссплатформенный сервер
От:
Аноним
Дата:
08.02.14 10:21
Оценка:
Здравствуйте, Lonely Dog, Вы писали:
LD>Здравствуйте, Аноним, Вы писали:
А>>Под твои задачи идеально подходит PHP LD>Гм, в эту сторону не думал. Считал, что PHP не подходит для серьезных разработок enterprise-уровня.
Да с PHP очень трудно поддерживать порядок в окромном количестве кода.
Тут все советуют C++ — не ведитесь это дорого и не эффективно. Не в плане производительности а в плане управления большим проектом.
Лучше уж посмотрите Erlang будет дешевле и надёжнее. На практике кода получается в 10раз меньше чем тоже самое на C++ и работает стабильнее (меньше багов).
Но самые жуткие монстры делаются всё таки на java там такой over engineering как раз для enterprise.
Да и если сравнить ресурсы то на java бюджет будет в десятки раз больше. Для освоения денег самый лучший кандидат.
_>Если есть возможность найти высококлассных профессионалов в C++, то это будет самый эффективный вариант. В этом случае могу посоветоваться использовать для доступа к БД библиотечку SOCI, ну и Boost просто по всяким мелочам. С доступом к нативному коду тут вопросов естественно нет. Но этот вариант подходит только при наличие подобных профессионалов, а в случае каких-нибудь там студентов в роли исполнителей, это будет худшим вариантом.
_>Если же для разработки подразумевается использовать слабых специалистов, то оптимальнее всего будет Java. С библиотеками для БД и т.п. тут вообще вопросов нет и наверное самой нетривиальной частью будет взаимодействие с нативным кодом (JNI).
_>P.S. Я там понимаю, что проект всё же не из пары строк, иначе как раз небольшой Python скрипт был бы оптимальным. )))
Да, проект довольно большой. Текущая версия занимает несколько сотен тысяч строк кода. На C++/C#/Java/Obj-C.
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Lonely Dog, Вы писали:
LD>>Коллеги, может вы что-нибудь подскажите?
_>Всё зависит от состава будущей команды.
_>Если есть возможность найти высококлассных профессионалов в C++, то это будет самый эффективный вариант. В этом случае могу посоветоваться использовать для доступа к БД библиотечку SOCI, ну и Boost просто по всяким мелочам. С доступом к нативному коду тут вопросов естественно нет. Но этот вариант подходит только при наличие подобных профессионалов, а в случае каких-нибудь там студентов в роли исполнителей, это будет худшим вариантом.
_>Если же для разработки подразумевается использовать слабых специалистов, то оптимальнее всего будет Java. С библиотеками для БД и т.п. тут вообще вопросов нет и наверное самой нетривиальной частью будет взаимодействие с нативным кодом (JNI).
Да со командой все ок. Людей с опытом меньше 5 лет нет. У многих больше 10 (именно C++).
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Lonely Dog, Вы писали:
А>Тут все советуют C++ — не ведитесь это дорого и не эффективно. Не в плане производительности а в плане управления большим проектом. А>Лучше уж посмотрите Erlang будет дешевле и надёжнее. На практике кода получается в 10раз меньше чем тоже самое на C++ и работает стабильнее (меньше багов).
Это уж совсем экзотика. Людей найти наверное тяжело будет.
А>Но самые жуткие монстры делаются всё таки на java там такой over engineering как раз для enterprise. А>Да и если сравнить ресурсы то на java бюджет будет в десятки раз больше. Для освоения денег самый лучший кандидат.
Задачи освоения денег нет
Это новая версия коробочного продукта, который мы успешно продаем. Т.ч. делаем за свои деньги