Среда разработки С++
Вот так вот, решил ознакомиться с сим языком и дилемма.
Пока нужна возможность только писанины чистого си, пока даже консольного, но с гуи билдером желательно каким-то. Основные требования - няшность и удобный отладчик. Пробовал визуал студию - норм, но все равно что-то не то. Коде::блок - лучше, но как-то душа не лежит. И в отладчике почему-то не останавливается на брейкпоинтах. Кюти билдер - выглядит оче ок, но я пока не понимаю зачем. А еще его хрен настроишь, еле прикрутил к нему компилятор, но отладчик все равно не работает. Пока хочу добить кютибилдер. Но надо ли он мне? Там вообще можно на С++ ванильном писать и билдить его, чтоб на других пеко запустилось? |
Хм. Только донастраивал кюти билдер, неплохо.
Правда почему там пустые переменые и мыссивы в отладчике показываются со случайными значениями? |
Цитата:
Цитата:
Если только под win, то VS + WPF, под Mac Xcode или AppCode. Но вплане изучения языка не советую забивать Qt голову. Да кстати почему С, а не С++? Сейчас я использую AppCode, лучше пока не встречал. Хотя в основном приходится писать код в консольном vim'e ) Цитата:
PS: начни с vim + g++/clang++ + make + книги (Страуструп, Мейерс, Элджер, Седжвик, Дьюхерст) |
Цитата:
const foo *i = &bar; то IDE никаким образом не будет знать (если не в режиме отладки), какое значение хранит переменная (если это мусор) или на какую ячейку памяти она ссылается. Поэтому я предположил что скорее всего имеется ввиду размер занимаемой памяти для конкретной архитектуры: const std::size_t size = std::sizeof(foo); |
Может немного не в тему, но есть такие штуки, как компиляторы онлайн. Софтину серьёзную ненапишеш, но поиграться в целях обучения очень даже прикольно.
programr Куча демок которые можно запускать и редактировать, куча языков и платформ. Демки разбиты по темам, проилюстрированы все основные возможности языка. главная http://www.programr.com/ С++ http://www.programr.com/zone/cpp <iframe src='http://www.programr.com/embed.php?action=tf&path=demostudent//view/temp_1370396448/Example.cpp' width='100%' height='700' frameborder='0'></iframe> Что понравилось,на ресурсе дак это то что есть возможность мучить пробные приложения для IOS и Android, и что самое главное запускать. сначало compile потом run (вдруг первый раз компилятор кто увидел :) ) <iframe src='http://www.programr.com/embed.php?action=tf&path=demostudent/view/temp_1370397379/Example_1363180033291' width='100%' height='700' frameborder='0'></iframe> www.compileonline.com А вот здесь больше языков, но без демок. Зато можно пощупать всякую экзотику и ископаемых типо Ada или Algol-68 Сайт http://www.compileonline.com/ ссылка на С++ http://www.compileonline.com/compile_cpp_online.php |
Цитата:
Основное назначение таких сервисов как liveworkspace.org, codepad.org это дать возможность быстро проверить ту или иную особенность языка или просто создать демонстрационный пример для кого-то другого. |
Цитата:
Но вообще не знаю, я не по ним учился :) |
Цитата:
|
ну ты перегнул насчёт пяти лет помоему.
Что касается основных конструкций то их можно ну скажем за неделю выучить. Потом месяцами будешь забывать, путаться, заглядывать в справочник. Но это пройдёт, и спустя какое то время можно начать писать вполне уверенно. Неплохо решать типовые задачи, тогда станет ясно где и что уместно применять. Для продакшн конечно придётся в библиотеках разбираться в том же MFC хотя бы. Ну а что касается написание сложных программ, то этот навык не привязан к языку. Если можешь написать большое приложение на javascript то сможешь и на C++. Обретение этого навыка состоит из изучения программной инженерии, эксперементов и изучения чужих исходников. Так что я несогласен с отсутствием логики. Да и Qt для JS программиста не самый плохой выбор, с учётом того насколько активно там применяется html и Js. Программу потом можно будет собрать под windows, linux, и macOS. C 5й версии приложения можно запускать на андроид а с 5.2 (осень 2013) на IOS Хотя конечно решение принимать надо с оглядкой на рынок, c оглядкой на количество QT вакансий. |
Цитата:
Цитата:
к примеру финт с потоками: struct log final : public std::ostream { public: explicit log(const std::string &type, const std::string &file = "") : std::ostream(new buffer(type, file)) {} ; ~log() { delete std::ostream::rdbuf(); } private: struct buffer final : public std::stringbuf { public: explicit buffer(const std::string &type, const std::string &file) : type (type), file (file) {} ; ~buffer() { std::streambuf::pubsync(); } virtual int sync(); private: const std::string type, file; } ; log(const log&) = delete; const log& operator=(const log&) = delete; } ; Использую для того чтобы писать красиво в лог: using LOG_INFO = ::log; LOG_INFO ("error", (*error)->name) << "file: " << (*file)->name; Или еще пример: template <typename T> struct find_equal : std::binary_function <T, T, bool> { find_equal(const T &value) : value(value) {}; bool operator()(const T &left, const T &right) const { return left == value && right == value; } private: T value; }; Используется как предикат: file.erase(std::unique(file.begin(), file.end(), ::find_equal<char>(' ')), file.end()); Хотя сейчас std::binary_function <...> deprecated, потому что можно писать так: file.erase(std::unique(file.begin(), file.end(), [](const char &left, const char &right) { return left == value && right == value; }), file.end()); Попробуй все это объяснить новичку. Даже на самый простой вопрос чем отличаются union, struct, class не каждый ответит, особенно если не читал С++11, к примеру: union __union final { const int i; }; using foo = const union ::__union; foo un = { .i = 0 }; std::cout << un.i << std::endl; // 0 Пруф Ну и на последок прикоюха с перечислениями: enum __enum : int { value = 0 }; std::cout << __enum.value << std::endl; // 0 Пруф Цитата:
Цитата:
void *(*foo)(int *); Я понимаю если бы там было бы обращение к другим членам класса типа: (*parent)->method.property Ну или здесь: using buffer = std::istreambuf_iterator<char>; content.assign((buffer(file)), buffer()); Сейчас я понимаю почему это сделано так, но это нужно еще принять ) Или вот приколюха из нового стандарта: i++++++++++; // i += 5; Ну или вместо того чтобы добавить std::lexical_cast<...>() они добавили: stoi, stol, stoll, stoul, stoull, stof, stod, stold, to_string, to_wstring к имеющимся strtod, strtold, strtof, strtoul, strtoull, trtol, strtoll, atoi, atol, atoll спрашивается нафига? |
Часовой пояс GMT +3, время: 22:59. |