Должен ли я перейти от C ++ в Python? ... Или другой язык?

голоса
12

В компании я работаю, мы делаем много обработки транзакций на основе файлов. Обрабатывающие центры вокруг преобразования файлов между многочисленными форматами, чтобы удовлетворить многочисленные системы в многочисленных компаниях.

Обработка почти всегда включает в себя XMLэтап , и может включать в себя много синтаксического анализе текста, базы данных, поиски преобразования данных и проверки данных.

В настоящее время программа , выполняющая все эти задачи написана C++и они выполняют довольно быстро все на одном среднем сервере. Я расследую возможности использования более «современный» язык , что новые аспиранты программисты, более вероятно, будут знакомы. (Правильное распределение памяти , C++кажется, вызывает проблемы с большим количеством новых программистов в эти дни)

На основании информации , предоставленной краткой, будет язык , таких как Python обеспечить требуемую функциональность и производительность, а также решение о выделении памяти (и различные другие C++связанные с ними) проблемы , которые возникают?

Мне нравится идея не необходимости компилировать программы каждый раз, когда мы делаем изменения. Я понимаю, что интерпретируемые языки, вероятно, не попал в такую ​​же производительность, мы в настоящее время получить.

Наши системы Linuxоснованы , которые также ограничивают некоторые варианты.

Любые комментарии по функциональности и производительности доступны с Pythonили предложения альтернативных языков будут оценены.

Задан 12/08/2008 в 11:24
источник пользователем
На других языках...                            


13 ответов

голоса
5

Python, вероятно, удалить большую часть материала низкого уровня, который вы используете в вашем приложении. Распределение памяти не будет проблемой больше. Кроме того, по крайней мере, мой университет, кажется, охватывает Python как язык программирования, потому что студенты не должны писать все, что формальные вещи, чтобы начать работу. Ваша единственная проблема будет частью производительности, так как Python, скорее всего, никогда не будет так быстро, как программы, составленной на C ++.

Я бы посоветовал вам взять пару недель, чтобы знать языки программирования, которые вы рассматриваете. Я бы проверить Руби также. Может быть игрушка вокруг с Haskell немного?

Как я понимаю, Python, кажется, хорошо оборудован для работы со всем, что вы говорите. XML, поиски базы данных, проверка, анализ. Это, как правило, безопасный выбор, а не только из-за легкий и увлекательный игровой опыт программирования, но если вы застряли там огромная община вокруг языка, которые только рады помочь.

Ответил 12/08/2008 в 11:33
источник пользователем

голоса
18

Мне нравится идея не необходимости компилировать программы каждый раз, когда мы делаем изменения. Я понимаю, что интерпретируемые языки, вероятно, не попал в такую ​​же производительность, мы в настоящее время получить.

Это самая большая проблема; Вы можете жить с падением производительности. Вы можете попробовать использовать Python и простирающийся его с текущими C ++ модулей для тяжелых деталей производительности. Тем не менее, переход всей системы кажется большим усилием , если единственной причиной является отсутствие таланта C ++. Наем людей , которые знают C ++ , кажется , как более дешевый вариант.

Ответил 12/08/2008 в 11:38
источник пользователем

голоса
9

Что более важно, быстро получать программы для работы или получения программ, работающих быстро?

Если вы имеете дело с большим количеством больших файлов, то вы можете быть лучше оставаться в C ++ и учить выпускник программистов, что указатель (!)

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

Если нагрузка по обработке на рекорд не высока, вы можете быть удивлены, как мало вы потеряете производительность: файл IO почти наверняка будет обрабатываться в скомпилированном (C) библиотеке, поэтому накладные расходы переводчика могут быть относительно низкими. Стоит попробовать, я хотел бы предложить.

Из императивных языков, Perl является очевидным вариантом, Python является популярным и рубин имеет высокий профиль (и, вероятно, более чистые особенности OO, чем первые два). Тогда есть немного больше, гм, эзотерическая область функциональных языков, но я не уполномочен комментировать их.

Ответил 12/08/2008 в 11:52
источник пользователем

голоса
4

Другой альтернативой является внедрение Python в программе C ++. Вы можете сохранить большую часть вашего приложения то же самое, и делать вызовы к Python для частей, которые часто изменяются, или требуется гибкость, язык сценариев обеспечивает.

Из документации Python

В предыдущих главах обсуждались, как расширить Python, то есть, как расширить функциональные возможности Python пути присоединения библиотеки функций C к нему. Кроме того, можно сделать это наоборот: обогащать / приложение ваш C C ++, встраивая Python в нем. Встраивание обеспечивает приложение с возможностью реализации некоторых функциональных возможностей приложения в Python, а не C или C ++. Это может быть использовано для многих целей; один пример должен был бы позволить пользователям адаптировать приложение к их потребностям, написав несколько сценариев в Python. Вы также можете использовать его сами, если некоторые функции могут быть написаны на Python более легко.

Ответил 12/08/2008 в 13:34
источник пользователем

голоса
0

Или попытаться сохранить свои правила анализа в базе данных вместо того , чтобы оставить их жестко закодировано внутри кода. Как Кен Downs правильно процитировал, минимизировать код, максимизировать данные . Таким образом , вам не нужно будет перекомпилировать каждый крохотные изменения правил.

Ответил 12/08/2008 в 18:00
источник пользователем

голоса
2

Я не хочу говорить об этом, но е вы хотите что-то, что входящие разработчики собираются быть знакомы, пойти с Java. Java является языком, что большинство недавних выпускников будут наиболее знакомы. Вы все еще должны собрать, но время компиляции будет короче, чем C ++. Он будет работать на Linux и почти нигде. У него есть хороший сборщик мусора. Это довольно быстро. И я упомянул ваши разработчики будут знакомы с ним? Нет, это не «круто», как Python, но это очень старались и истинный язык.

Честно говоря, я сомневаюсь, что у вас есть много входящих разработчиков, которые сосут с C ++, но было бы удивительным с Python в любом случае. Люди, которые используют Python хорошо, как правило, хорошо с ручным управлением памятью. Люди, которые плохо с управлением памятью на самом деле, как правило, плохо со всеми языками.

Я нахожу это вызывает беспокойство, что у вас есть разработчики, которые так плохо с управлением памятью, что вы хотите, чтобы переключать языки. Это знак указывает на проблему, но я не уверен, что проблема с языком.

Ответил 12/08/2008 в 18:10
источник пользователем

голоса
0

Если вы можете уйти с использованием Python, Ruby, Groovy или Perl против C ++ вы бы лучше идти с одним из этих высокоуровневых языков. Производительность значительно увеличится. Если вы обнаружите, что вам нужно больше производительности, то идти с Java. Каждый человек должен знать, на и использовать по крайней мере один динамически типизированный язык.

Ответил 08/09/2008 в 01:43
источник пользователем

голоса
0

следует перейти к питона, что Languange сделать все возможное в сети, если вам нужно быстрее перейти на C / C ++

Ответил 22/09/2010 в 11:51
источник пользователем

голоса
1

Я хотел бы предложить, чтобы попробовать заводной. Поддержка XML в порядке и разбора, а также проверка достоверности данных должна быть не сложно.

Однако некоторые люди отметили, что мигрирует не может быть самой яркой идеи. Не можете вы пытаетесь вынесем общий материал в «Мачер объектов» и «проверки объектов», так что новые программисты использовать C ++ библиотеку вместо того, чтобы пытаться писать ошибки склонный новый код, который только дублирует существующие фрагменты?

Также amke обязательно использовать современные файловые IO (iostreams), а не C, как IO в C ++, который должен помочь с проблемами памяти много.

Кроме того, глядя на библиотеки наддува может быть полезным.

Ответил 01/06/2011 в 10:48
источник пользователем

голоса
1

Производительность в Python может быть очень большой проблемой. После того, как я должен был создать программу с участием алгоритма оптимизации в списке задач. Я начал с Python, создал его супер-быстро и чисто, то увидел , что это будет принимать возрастов , чтобы обеспечить результат. Переписывание построчно на C ++ привело к более 100х увеличение скорости ...

Так что иногда это не вопрос потери производительности на 5-10%, как вы можете видеть. Вы должны исследовать его в вашем случае (может быть небольшой тест?).

Ответил 01/06/2011 в 11:04
источник пользователем

голоса
2

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

Если вам удастся найти приятный набор библиотек, это будет легко для новичков, чтобы узнать написание чистого кода. Мой (текущие) личные предпочтения библиотека классов Qt, потому что она делает обработку легко и безопасно памяти и приятно работать. Она также имеет поддержку XML-анализ и генерацию, имеет встроенные, сетевые возможности РегВыра, является кросс-платформенным, ... а также очень полезен для систем без графического интерфейса.

Для меня это огромная разница между работой с обычным C ++, библиотекой станда и STL и работать с мощной библиотекой, как Qt. Возможно, глядя в наддува лакомства также очень целесообразны.

Ответил 01/06/2011 в 11:06
источник пользователем

голоса
0

если характер проекта вы делаете позволяет даже думать такой шаг, то не двигаться (при условии , что у вас есть ключ). Во многих проектах C ++ , однако, ваш единственный выбор движется вниз один или два уровня абстракции (например, на C или Ассамблеи).

Ответил 01/06/2011 в 11:13
источник пользователем

голоса
0

Я согласен с другими, вы должны придерживаться C ++. Переключение на нескомпилированном язык является шагом назад. В то время как многие программисты могут возникнуть проблемы дела с некоторыми из проблемных аспектов языка (например, указатели), по крайней мере, большинство программистов были подвержены некоторыми C ++. Я рекомендую вам тратить свое время и деньги, улучшая ваш кодовые и программист, а затем переключение языков.

Что касается других языков, вы можете держать глаза на GO языке. Один мой знакомый использовал его достаточно широко. Это современный компилируемый язык. Это имеет тенденцию быть четкими, краткими и современными. GO приложения обычно работают на скоростях, сравнимых с написанным в C ++ и интерфейсы хорошо с вебом. Это не очень зрелое в этой точке, но это выглядит многообещающе.

Удачи!

Ответил 05/06/2012 в 23:57
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more