2009-05-29 4 views
4

Мне нужно загрузить некоторые файлы csv через http из Интернета, проанализировать его и преобразовать в более полезный fomat. В конце концов программа C++ будет использовать данные. Несколько лет назад я бы вытащил свои книги на Perl и начал писать сценарии Perl для загрузки и разбора. Но теперь с Boost и Qt я могу сделать загрузку, разбор и бросить в GUI-интерфейс на C++ с минимальными усилиями. В прошлый раз я написал Perl/Python около 6 месяцев назад. Вероятно, мне понадобится больше времени, чтобы сделать это в Perl/Python, и мой код Perl/Python будет дерьмом. Если единственный инструмент, который у меня есть, это молоток, все выглядит как гвоздь? Или время изменилось, и C++ может быть продуктивным в области, в которой традиционно доминируют языки скриптов, такие как Perl или Python?Если у вас есть только молоток ... или

+2

+1 «Если у меня единственный инструмент, это молоток, все выглядит как гвоздь» ... просто не стучите в гипсокартонные винты с помощью молотка, только чтобы сказать, что позже вы можете покрыть его грязью , – dotjoe

+3

Проголосовал за закрытие как не вопрос. Это может сделать либо C++, либо язык сценариев. –

+2

В чем ваш вопрос? – Zifre

ответ

1

Ну, если вам нужно построить дом, молот будет работать нормально. Но строительство дома с использованием пневматического каркасного гвоздя намного проще.

C++ - это прекрасный язык, и вы можете быть продуктивным в областях, в которых доминируют языки сценариев, но при прочих равных условиях вы будете более продуктивно использовать perl/python для синтаксического анализа текста.

-1

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

Возможно, вы можете спрятать что-то в C++, но решение Perl, вероятно, будет более надежным и удобным.

+2

Его легко написать неподъемный perl. – Alan

2

Почему нет?

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

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

Если он проходит тесты здравого смысла, подобные этому, то почему бы и нет?

3

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

Но обычно я ожидал бы, что больше людей будут использовать python/perl для такого рода задач.

9

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

1

Проблема производительности C/C++ vs. python/perl кажется мне неактуальной. Если вы хотите написать свой парсер, используя Qt, Boost и любые другие наборы инструментов на полке, сделайте это. Вы на самом деле не указали, является ли скорость разбора проблемой, но даже если бы это было, было бы даже дело для вашего дела.

Даже если вы считаете, что на языке X это может быть проще, напишите его на языке Y, если вы хотите попробовать что-то новое об этом языке. Это похоже на довольно легкую задачу, поэтому просто напишите, как вы хотите ее написать.

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

0

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

Кстати, вы, вероятно, уже знаете это, но библиотека Boost.Tokenizer имеет возможности синтаксического анализа CSV, встроенные через escaped list separator.

0

Из вашего описания, похоже, что у вас есть другие инструменты, кроме молотка. Чем больше инструментов у вас есть, тем эффективнее вы сможете это сделать. Используйте все имеющиеся у вас инструменты, чтобы выполнить работу, а иногда покупайте (учитесь) больше инструментов.

0

Мне нравится C++. Я ненавижу компиляцию, запуск, тестирование, закрытие цикла - особенно когда мне нужно проверять данные.

Мое решение: я создал небольшую среду программирования [powered by Lua], которую я вставляю в свои приложения на C++, а я открываю во время выполнения и делаю материал в интерактивном режиме. Зачем держаться в одной среде программирования? Используйте лучшее из обоих миров.

Смежные вопросы