Мне нужно загрузить некоторые файлы csv через http из Интернета, проанализировать его и преобразовать в более полезный fomat. В конце концов программа C++ будет использовать данные. Несколько лет назад я бы вытащил свои книги на Perl и начал писать сценарии Perl для загрузки и разбора. Но теперь с Boost и Qt я могу сделать загрузку, разбор и бросить в GUI-интерфейс на C++ с минимальными усилиями. В прошлый раз я написал Perl/Python около 6 месяцев назад. Вероятно, мне понадобится больше времени, чтобы сделать это в Perl/Python, и мой код Perl/Python будет дерьмом. Если единственный инструмент, который у меня есть, это молоток, все выглядит как гвоздь? Или время изменилось, и C++ может быть продуктивным в области, в которой традиционно доминируют языки скриптов, такие как Perl или Python?Если у вас есть только молоток ... или
ответ
Ну, если вам нужно построить дом, молот будет работать нормально. Но строительство дома с использованием пневматического каркасного гвоздя намного проще.
C++ - это прекрасный язык, и вы можете быть продуктивным в областях, в которых доминируют языки сценариев, но при прочих равных условиях вы будете более продуктивно использовать perl/python для синтаксического анализа текста.
C++ не был специально разработан для обработки длинных строк текста. (Посмотрите на старые C-струны ... они были кошмаром для чего-то серьезного.) Напротив, Perl был , сделанный для такого рода использования.
Возможно, вы можете спрятать что-то в C++, но решение Perl, вероятно, будет более надежным и удобным.
Его легко написать неподъемный perl. – Alan
Почему нет?
Если вы код взломанный из-за отсутствия библиотек/функций, то C++ может быть не лучшим. Если это нужно часто менять, то C++ может быть не лучшим. Если другие пользователи, знакомые с Perl/Python, сохранят его, то C++ может быть не лучшим. и т. Д.
Действительно ли вам нужен графический интерфейс? Вам нужна скорость? Ничего не изменилось, чтобы сделать C++ языком сценариев, но это не значит, что вы не должны его использовать.
Если он проходит тесты здравого смысла, подобные этому, то почему бы и нет?
Для вашего примера кажется, что вы будете более продуктивными и сможете легче решить вашу проблему с помощью C++, поскольку это то, что вы знаете.
Но обычно я ожидал бы, что больше людей будут использовать python/perl для такого рода задач.
Какое значение имеют другие люди, ожидающие решения? Если вы получите, то можете сделать работу лучше и быстрее на C++, сделайте это на C++, конец истории.
Проблема производительности C/C++ vs. python/perl кажется мне неактуальной. Если вы хотите написать свой парсер, используя Qt, Boost и любые другие наборы инструментов на полке, сделайте это. Вы на самом деле не указали, является ли скорость разбора проблемой, но даже если бы это было, было бы даже дело для вашего дела.
Даже если вы считаете, что на языке X это может быть проще, напишите его на языке Y, если вы хотите попробовать что-то новое об этом языке. Это похоже на довольно легкую задачу, поэтому просто напишите, как вы хотите ее написать.
Вам также необходимо подумать о будущем использовании. Если эта программа нуждается в дополнительном расширении и расширении, это может спровоцировать определенный выбор языка.
Если вы более продуктивны в C++, то обязательно используйте C++. По-прежнему хорошая идея изучать другие языки, но иногда вам нужно идти с тем, что вы знаете, чтобы все было сделано.
Кстати, вы, вероятно, уже знаете это, но библиотека Boost.Tokenizer имеет возможности синтаксического анализа CSV, встроенные через escaped list separator.
Из вашего описания, похоже, что у вас есть другие инструменты, кроме молотка. Чем больше инструментов у вас есть, тем эффективнее вы сможете это сделать. Используйте все имеющиеся у вас инструменты, чтобы выполнить работу, а иногда покупайте (учитесь) больше инструментов.
Мне нравится C++. Я ненавижу компиляцию, запуск, тестирование, закрытие цикла - особенно когда мне нужно проверять данные.
Мое решение: я создал небольшую среду программирования [powered by Lua], которую я вставляю в свои приложения на C++, а я открываю во время выполнения и делаю материал в интерактивном режиме. Зачем держаться в одной среде программирования? Используйте лучшее из обоих миров.
- 1. У вас есть ссылка появляется, только если href-файл существует
- 2. Как переместить unique_ptr, если у вас есть только * ptr
- 3. Если у вас есть 0 "ИЛИ" нет 0 на PHP
- 4. У вас есть только версия для печати?
- 5. У вас есть время "Slack"?
- 6. У вас есть опции поиска
- 7. У вас есть несколько библиотек?
- 8. Какие у вас есть разрешения?
- 9. Вызов статического члена, когда у вас есть только общий параметр
- 10. тестирование, если у вас есть пустой текстовый узел в xml
- 11. У вас есть кнопка Tkinter?
- 12. Почему у вас есть «где»
- 13. jquery - ajax testing, если у вас есть аккаунт?
- 14. Android SMS Как получить контент, если у вас есть номер
- 15. Если у вас есть объект класса, обратитесь к методу `toString`
- 16. У вас есть дисплей дисплея ТОЛЬКО при первом посещении (куки?)
- 17. Если у вас есть документ, выберите соответствующий фрагмент
- 18. Получите рост, если у вас есть разница в скорости
- 19. Как знать, если у вас есть объект JQuery
- 20. Если у вас есть действие индекса для контроллеров представлений?
- 21. Как использовать инструкции switch, если у вас есть четыре входа
- 22. Почему у вас есть только AlphaNumeric, разрешенный в имени привязки?
- 23. Создайте сокет, если у вас есть DNS-имя
- 24. У вас есть только одна служба WCF со статическими методами?
- 25. AB + C, когда у вас есть только ABC и C
- 26. У вас есть только комментарий в блоке вашего SQL-оператора?
- 27. У вас есть проблема с проверкой правильности строки или нет
- 28. Что использовать wpml-config.xml, если у вас есть String Translation?
- 29. это нормально, если у вас есть две готовые документы.
- 30. У вас есть, чтобы отменить requestAnimationFrame
+1 «Если у меня единственный инструмент, это молоток, все выглядит как гвоздь» ... просто не стучите в гипсокартонные винты с помощью молотка, только чтобы сказать, что позже вы можете покрыть его грязью , – dotjoe
Проголосовал за закрытие как не вопрос. Это может сделать либо C++, либо язык сценариев. –
В чем ваш вопрос? – Zifre