LINUX.ORG.RU

Хочу в C++.

 ,


4

4

Хай. Решил освежить знания, давненько не кодил на цэ. Появился ряд вопросов:

1) Есть ли какие-то годные IDE? Например, у меня программа с кучей файлов. Может ли кто-то собрать мне исполняемый файл нажатием одной кнопки (а-ля Visual Studio)? Без консольной возьни в «g++ -o files files files» и так далее? В общем, не шарю, можно отвечать развернуто, если я чего-то не понимаю. По поводу отладчика отдельный вопрос, задавать страшно.

2) Где лучше почитать про системы автоматической сборки (make, cmake И т.п. или как их там)?

2.2) Где в целом почитать про организацию исходников таким образом, чтобы можно было собрать на любой linux-машине (configure && make && make install)? В win в этом плане совсем не так, там не надо компилять, но и готовить пакет под кучу дистров тоже не надо.

3) Какие принципиальные отличия в реализации «стандартной библиотеки» цэпэпэ между Win и Lin? Последний раз я кодил под Win и, если не ошибаюсь, например, функции в духе getch() в Lin отсутствуют (по непонятной мне причине). Где взять инфу о различиях?

4) Где отдельно почитать про C++ Boost, или как его. Краем уха слышал. Четвертая (последняя) редакция Страуструпа про это расскажет?

Пока все. Планирую пополнять тред вопросами. Тупыми... Вопросами... >;(



Последнее исправление: coderage (всего исправлений: 1)
Ответ на: комментарий от yoghurt

Кому, тебе? А вот я наоборот, часто применяю стандартные алгоритмы именно на диапазоны в контейнере.

ссылку на код? или примеры? а то голословным быть легко

Офигеть, как много лишнего кода, просто океан!

да - в разы больше

Если уж так коробит, можно завести шорткат-функцию в одну-две строчки и использовать её. В чём проблема-то?

так и делаю

wota ★★
()
Ответ на: комментарий от wota

ссылку на код? или примеры? а то голословным быть легко

Проприетарщина. Но заказчик подумывал открыть код, когда всё взлетит, может тогда и покажу :)

да - в разы больше

Для одной-то маленькой операции, которая небось выполняется в приложении в одном-двух местах. Более, чем уверен, что в масштабах проекта разница никчёмна.

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

То, что здесь нет лапши (никто это и не доказывал, кстати), не значит, что это хороший и красивый код и что так нужно писать.

Привет ещё одному не видевшему настоящей лапши.

Привет ещё одному не видевшему поддерживаемого кода.

E ★★★
()
Ответ на: комментарий от E

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

В удалении элементов из строки, которое, впрочем, даже не я тут продемонстрировал, всего этого нет.

Привет ещё одному не видевшему поддерживаемого кода.

Если приведенные выше две строчки для тебя «неподдерживаемый код», то у меня для тебя плохие новости.

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Все видели лапшу хоть раз в жизни. Это не то, чем нужно хвастаться.

Если приведенные выше две строчки для тебя

Это не для меня. Ты спутал ник.

E ★★★
()
Ответ на: комментарий от wota

так и делаю

Тогда в чём проблема-то?!

Это чем-то напоминает цитату Питера Сейбеля про foreach в Джаве, который ждали полтора года, против dolist в Common Lisp, который пишется за пять минут. Только тут даже нет синтаксических затруднений.

ilammy ★★★
()
Ответ на: комментарий от E

Это не то, чем нужно хвастаться.

Воу воу, демагог, палехче!

yoghurt ★★★★★
()
Ответ на: комментарий от comp00

Имхо, если ты не работал с gcc и gdb из консольки вручную - ты не программист с++

Дебажить плюсы через gdb настолько приятно, что кодеры пытаются писать код максимально осторожно, чтобы лишний раз не проходить через этот процесс.

x3al ★★★★★
()
Ответ на: комментарий от wota

Какие страсти вы тут развели :) И я такой, размахивая флагом, «хочу си, хочу си, знаю что такое main()», хаха. :)

coderage
() автор топика
Последнее исправление: coderage (всего исправлений: 1)

Хотя ты можешь меня не понять, но как начинающий в данной области я бы тебе посоветовал использовать vim. По сравнению с утомительным и выбешивающим поиском нужного фукционала в запутанных интерфейсах, когда ты еще толком не разбираешься в понятиях и языке, он — прост как молоток, ударил — забилось. Написал в нем CMakeLists.txt, и пишешь себе код ни о чем не заботясь особо. Несложную отладку в gdb легко освоить. Плюс strace, ptrace. Мне очень нравится этот инструментарий — гибко, удобно, несложно, вхождение — пара недель. Очень рекомендую вначале научиться использовать инструменты для разработки. Вот несколько ссылок для начала:

Исчерпывающее описание gdb:

http://rus-linux.net/nlib.php?name=/MyLDP/algol/gdb/otladka-s-gdb.html

Vim:

http://rus-linux.net/MyLDP/BOOKS/Vim/prosto-o-vim.pdf

Cmake:

http://neerc.ifmo.ru/wiki/index.php?title=CMake_Tutorial http://habrahabr.ru/post/155467/

Собственно C++:

http://www.cplusplus.com/doc/tutorial/

Policeman
()

По превому пункту добавлю NetBeans - сам его использую.

vromanov ★★★
()
Ответ на: комментарий от x3al

Дебажить плюсы через gdb настолько приятно, что кодеры пытаются писать код максимально осторожно, чтобы лишний раз не проходить через этот процесс.

это ты мягко намекаешь на кривизну сишного дебагера? Да?

А вот я сейчас программу пишу, которая шарики расставляет. В семимерном пространстве. Можешь рассказать, чем мне там дебагер поможет? Шарики нарисует, да?

emulek
()
Ответ на: комментарий от x3al

Имхо, если ты не работал с gcc и gdb из консольки вручную - ты не программист с++

+100500

Дебажить плюсы через gdb настолько приятно, что кодеры пытаются писать код максимально осторожно, чтобы лишний раз не проходить через этот процесс

IDE программист детектед? сможешь что то написать без использования IDE?

anonymous
()
Ответ на: комментарий от emulek

это ты мягко намекаешь на кривизну сишного дебагера? Да?

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

Если использовать плюсы без ООП — проблем особо нет, конечно.

x3al ★★★★★
()
Ответ на: комментарий от anonymous

Пишу в gvim то, что могу. Крупные вещи без IDE писать сложнее в том числе потому, что gdb не заточен под ООП от слова «никак».

x3al ★★★★★
()
Ответ на: комментарий от x3al

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

проблема в том, что твой отладчик в IDE годен только для простых абстракций ООП, как в учебнике. Ну типа «служащий, метод: дать_зарплату(), метод дать_пи*ды(), поле double ненависть», и т.п. Да, такое хорошо получается рисовать твоему IDE, но нужно-ли это на практике? Ну вот твоё IDE в моём реальном коде покажет мне реально 7 чисел типа float, и что я с ними буду делать? Ну вот например расстояние между двумя очками очевидно считается как среднее геометрическое, и у меня есть такой метод. Но разве твоя IDE выполнит данный метод сама? А нафига мне две точки, если я не вижу даже того, насколько они далеко друг от друга? Это видно в IDE только в одномерном случае, а даже в двухмерном — не видно, нужна карта. Твоя IDE умеет делать карты?

Ну а для тривиальных абстракций отладчик не нужен в силу их тривиальности.

Если использовать плюсы без ООП — проблем особо нет, конечно.

зачем нужны «плюсы без ООП»? Писать хеллловорлд на STL что-ли?

emulek
()
Ответ на: комментарий от emulek

Прекрати троллить, я не настолько упорот, чтобы считать IDE чем-то настолько хорошим. Ну и сообщения GCC об ошибках в шаблонах (особенно если прикоснуться к boost) могут растянуться на 4 экрана.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Прекрати троллить, я не настолько упорот, чтобы считать IDE чем-то настолько хорошим.

ok

Ну и сообщения GCC об ошибках в шаблонах (особенно если прикоснуться к boost) могут растянуться на 4 экрана.

бустопроблемы на самом деле.

emulek
()
Ответ на: комментарий от x3al

Переходи на Clang, у него сообщения вменяемые.

anonymous
()
Ответ на: комментарий от x3al

Дебажить плюсы через gdb настолько приятно, что кодеры пытаются писать код максимально осторожно, чтобы лишний раз не проходить через этот процесс.

Не умеешь - не берись. Все дебажится элементарно: http://sourceware.org/gdb/wiki/STLSupport

anonymous
()
Ответ на: комментарий от anonymous

За шаблонами

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

RAII

ну может есть какое-то другое RAII, но в C++ — это одна из фич ООП.

emulek
()
Ответ на: комментарий от anonymous

STL

Это один STL. От его поддержки не намного легче, если честно. Шаблонов дофига.

Тоже мне новости, млин.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Тупой? Это пример того, как делать printers для любых структур данных. Никакая IDE тебе лучше не сделает, попробуй посмотреть в MSVS те же STL-контейнеры - опухнешь.

anonymous
()
Ответ на: комментарий от emulek

лично я не в восторге от шаблонов.

Думаешь, твое некомпетентное мнение кому-то интересно? Ты ж тупой и упоротый.

Конечно они нужны, но ими не следует злоупотреблять.

Очень ценная информация. Проходи мимо, лошара.

ну может есть какое-то другое RAII, но в C++ — это одна из фич ООП.

Идиот. RAII в C++ не имеет никакого отношения к ООП.

anonymous
()
Ответ на: комментарий от emulek

по поводу дебагера: не нужен.

А как узнать, по какой ветке выполнение прошло? Сколько раз цикл выполнился? Какое, млять, значение переменной А, когда мы находимся в точке Х кода?

tiinn ★★★★★
()
Ответ на: комментарий от coderage

conio.h - это еще из DOS. Утилиты для консоли.

Aswed ★★★★★
()

Без консольной возьни в «g++ -o files files files» и так далее?

Щенок, начинать с этого нужно, чтобы знать что к чему!

amazpyel ★★★
()
Ответ на: комментарий от x3al

прибегал к gdb, только когда надо было найти сегфолт. В этом случае там нет ничего сложного. Скомпилить с флагом -g и запустить gdb. Остальные баги легко ищутся и без отладчика.

Aswed ★★★★★
()
Ответ на: комментарий от Deleted

Си проще, лучше и быстрее

Это, конечно, так, но наличие стандартной библиотеки шаблонов сильно ускоряет разработку.

Aswed ★★★★★
()
Ответ на: комментарий от amazpyel

Щенок, начинать с этого нужно, чтобы знать что к чему!

Придурок, тебе двух минут чтения мана недостаточно?

anonymous
()
Ответ на: комментарий от tiinn

А как узнать, по какой ветке выполнение прошло?

Микродебаггингом занимаешься? Зря, это стыдно.

Сколько раз цикл выполнился? Какое, млять, значение переменной А, когда мы находимся в точке Х кода?

Логи пиши.

anonymous
()
Ответ на: комментарий от anonymous

Думаешь, твое некомпетентное мнение кому-то интересно? Ты ж тупой и упоротый.

лучше быть тупым и упоротым, чем быть безымянным чмошником, который не может ответить даже за пару строк. Даже подписаться ссыт.

Очень ценная информация. Проходи мимо, лошара.

кто ты? Царь что-ли? Так и скажи: «я Царь».

Идиот. RAII в C++ не имеет никакого отношения к ООП.

дебил. Ты хоть знаешь, что такое RAII?

emulek
()
Ответ на: комментарий от tiinn

А как узнать, по какой ветке выполнение прошло? Сколько раз цикл выполнился? Какое, млять, значение переменной А, когда мы находимся в точке Х кода?

1. только мудак может узнавать, сколько раз должен выполнится цикл, который должен выполниться 10 раз.

2. Про отладочную печать слышал, да?

emulek
()
Ответ на: комментарий от Aswed

прибегал к gdb, только когда надо было найти сегфолт.

сегфолты часто в C++ ловяться и так, специальной(отладочной) версией конструктора/деструктора и new/delete. Также помогают и operator=() с конструктором копирования. Ну и конечно не нужно использовать cast'ы. Особенно не dynamic.

emulek
()
Ответ на: комментарий от Aswed

Это, конечно, так, но наличие стандартной библиотеки шаблонов сильно ускоряет разработку.

это конечно так, но наличие Over9000 шаблонов сильно замедляет компиляцию, и как следствие — разработку... С STL ещё ничего, а всякие бусты == вилы.

emulek
()
Ответ на: комментарий от anonymous

Придурок, тебе двух минут чтения мана недостаточно?

придурок — ты. Ну или наоборот — гений. Если за пару минут осилил ман в 17527 строк.

Но наверное — придурок, и ман ты даже не открывал.

emulek
()
Ответ на: комментарий от emulek

лучше быть тупым и упоротым,

Хуже чем быть тупым не может быть вообще ничего.

Даже подписаться ссыт.

Регистрасты такие регистрасты.

дебил. Ты хоть знаешь, что такое RAII?

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

Тот же STL вообще бесконечно далек от ООП. Для общего развития, сявка, почитай, что сам Степанов про ООП говорил.

anonymous
()
Ответ на: комментарий от Aswed

прибегал к gdb, только когда надо было найти сегфолт.

Идиотизм. Сегфолт обычно происходит вовсе не там, где реально была запорота память. Дебаггер тут совершенно никак не поможет. А вот тот же valgrind очень даже поможет.

anonymous
()
Ответ на: комментарий от anonymous

Дебаггер укажет функцию, где произошло падение. А дальше можно и руками разобраться. Хотя, возможно, valgrind действительно удобенее в таких моментах.

Aswed ★★★★★
()
Ответ на: комментарий от anonymous

Мудачье ты укуренное, маны не для того пишут, чтобы их от корки до корки читать.

детка, один раз прочитать таки надо. От корки до корки. Хотя-бы заголовки первых абзацев, и выборочно сами абзацы.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.