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)
Ответ на: комментарий от anonymous

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

ты это успешно опроверг.

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

в общем случае, к RAII тоже.

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

в отличие от тебя, я читал Степанова, а не только цитаты в баше и лурке.

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

Прокуренное мудачье даже читать не умеет, не удивительно.

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

Дебаггер укажет функцию, где произошло падение.

Совершенно бесполезная информация. Память могла быть испорчена где угодно еще. Тебе нужно отлавливать момент, где она портится, а не где последствия проявляются.

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

Совершенно бесполезная информация. Память могла быть испорчена где угодно еще.

ты идиот. Это полезная информация, ибо ты узнаёшь, какая именно память испорчена. И если ты не настолько мудак, что-бы юзать везде глобальные переменные, то ты уже знаешь где. Причём очень точно, если у тебя есть привычка писать везде где только можно const.

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

Это полезная информация, ибо ты узнаёшь, какая именно память испорчена.

А толку-то, придурок? При хорошем, годном memory corruption это будет вообще каждый раз разное место.

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

А толку-то, придурок? При хорошем, годном memory corruption это будет вообще каждый раз разное место.

значит твой код == говно. Если что угодно может испортить что угодно. Для этого и нужна инкапсуляция, что-бы не долбаться с дебагером и прочими костылями.

Вот тебе пример, придурок: если сделать private: operator=(), то ты не сможешь им воспользоваться, и скопировать то, что копировать не нужно. А если не сделать, то у тебя будет memory leak, причём в самом непредсказуемом месте. Также и const поставленный в нужном месте спасёт тебя от изменения того, что меняться никак не должно.

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

RAII в C++ это ООП.

не ври, дебилушка. Я такого не говорил.

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

Не спорю. Но, опять таки, если прогаешь в своё удовольствие, то и весь базовый функционал можно запилить.

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

Смотря как писать. Я колоекционирую исходники компиляторов и знаешь че? Там один проект, который реализует более полный и мощный компилятор зачастую проще маленького и говняненького.

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

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

Смотря как писать. Я колоекционирую исходники компиляторов и знаешь че? Там один проект, который реализует более полный и мощный компилятор зачастую проще маленького и говняненького.

ну с этим сложно спорить конечно. Я и не буду. Только замечу, что всё ещё и от задачи зависит. ООП позволяет разбить некоторые задачи на более мелкие и не связанные. В таких задачах профит от ООП значительный. Значительнее неизбежного в ООП оверхеда.

emulek
()

и да, возвращаясь к первому посту: твои вопросы никакого отношения к C++ и к ООП не имеют. Особенно НЕ рекомендую лезть в boost без должной подготовки. Там только на первый взгляд просто.

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

Дебаггер для своего кода на хер не нужен, придурок. Дебаггер - для отладки чужого говнокода.

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

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

Честно, ярый процедурщик. Если кто нибудь приведет пример, будет круто.

Deleted
()

1) Eclipse, netbeans, kdevelop, qt creator

2) на официальных сайтах. Советую cmake

3) у ms плохой компилятор и плохой подход, местами идущий в разрез со стандартом. Gcc и clang в этом плане лучше. Читай стандарты, ходи на isocpp.org, cppreference.com и cplusplus.com

4) boost.org.

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

Дебаггер для своего кода на хер не нужен, придурок. Дебаггер - для отладки чужого говнокода.

ага. Обычно — ворованного. Код украл, а сырцы не унёс. Копирайты перебивать удобно, и т.п. Я знаю. Сочувствую.

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

RAII не имеет никакого отношения к ООП. И STL тоже, например. Хотя в стандартной библиотеке и есть немного ООП кода.

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

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

ну дык потому-что задачи другие. Не все задачи хорошо ложатся на ООП. Не нужно фанатизма.

Если кто нибудь приведет пример, будет круто.

посмотри в сторону разных окошек. Qt например. В процедурном виде это унылое говно. Что-то вроде WindowsNT4 или там GTK1. Всякое Cairo это уже ООП во все поля...

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

ага. Обычно — ворованного. Код украл, а сырцы не унёс.

Идиот ты, баття, редкостно ебанутый идиот. 99% плюсовых библиотек написаны такой вот злоебучей пидарвой, как ты, и потому нуждаются в отладке. Я уж молчу про всякий там унаследованный код в старых проектах.

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

Да, точно, гуй на ооп лучше.

Но надо и на сишке поискать, может есть нормальные решения.

Ну а winapi, это 3.14здец, да.

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

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

-Володенька, это же не эстетично!
Зато пгактично! Отойди, а то бгызнет!

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

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

1. Хм, а если это чтение из COM-порта? 10 раз, ага?
2. А зачем писать отладочную печать, если можно не писать и посмотреть в отладчике? Я как-то считал, что не нужно плодить сущности без необходимости.

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

Это да. Я не только на сишке прогаю. Люблю gml, это мой первый ЯП.

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

должен выполниться 10 раз.

1. Хм, а если это чтение из COM-порта?

а тогда — не должен.

2. А зачем писать отладочную печать, если можно не писать и посмотреть в отладчике? Я как-то считал, что не нужно плодить сущности без необходимости.

а отладчик это не сущность?

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

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

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

а отладчик это не сущность?

Не я же её создал. Тут принцип бритвы Оккама надо трактовать применительно к создаваемому коду, а тулзы - что нам до них?

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

Не я же её создал. Тут принцип бритвы Оккама надо трактовать применительно к создаваемому коду, а тулзы - что нам до них?

в моём коде и нет никакой отладочной печати. Считай то, что за #ifdef DEBUG — отладчиком (:

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

Я как-то считал, что не нужно плодить сущности без необходимости.

Те же ассерты не являются лишней сущностью, это как минимум документация к неявным констрейнам в коде.

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

загугли. Прикольно. У меня такая же рожа была.

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

Те же ассерты не являются лишней сущностью, это как минимум документация к неявным констрейнам в коде.

А комментарии писать тоже не модно?

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

в моём коде и нет никакой отладочной печати. Считай то, что за #ifdef DEBUG — отладчиком (:

Дай почитать

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

А комментарии писать тоже не модно?

ассерты вполне себе могут включать комментарий

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

А комментарии писать тоже не модно?

Ассерты формальны, в отличие от комментариев, и могут приниматься во внимание системами статического анализа кода.

Ну да это уж совсем высокие материи для тебя, школьника, пишущего «hello, world»-ы.

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

Это всё хорошо, беда в том, что когда пишешь в svgalib, ассерты мало помогут. Мне же не надо, чтобы в этот момент прога вываливалась из графического режима. Хотя отладчик в этом случае тоже не спасёт. Бида :(

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

Это всё хорошо, беда в том, что когда пишешь в svgalib, ассерты мало помогут.

Идиот.

Мне же не надо, чтобы в этот момент прога вываливалась из графического режима.

Ну не тупой ли?

Ассерты должны в логи писать, вообще-то. stderr перенаправлять не умеешь, что ли?

Хотя отладчик в этом случае тоже не спасёт. Бида :(

Ламер. Зайди по ssh, и подключи gdb к работающему процессу.

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

в моём коде и нет никакой отладочной печати. Считай то, что за #ifdef DEBUG — отладчиком (:

Дай почитать

дай денег

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

Ассерты должны в логи писать, вообще-то. stderr перенаправлять не умеешь, что ли?

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

Ламер. Зайди по ssh, и подключи gdb к работающему процессу

Первый ценный комментарий. Кстати, поглядел я доки по этому gdb - уг. Что, консольную IDE в ncurses так никто и не смог написать за все эти годы? Ну, наподобие Borlanc C 3.1? Не верю.

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

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

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

Кстати, поглядел я доки по этому gdb - уг. Что, консольную IDE в ncurses так никто и не смог написать за все эти годы? Ну, наподобие Borlanc C 3.1? Не верю.

Ну ты недоумок! К gdb десятки разнообразных морд, включая тот же Eclipse, QtCreator, Emacs, ddd.

anonymous
()

1) gvim (clang_complete, supertab, ctrlp);

2) cmake, для общего развития познакомься с другими решениями;

3) RTFMчитай стандарт. STL она и в африке STL. конкретные реализации могут отличаться, но ко времени, когда начнут интересовать потроха - сам разберешься;

4) http://www.boost.org/doc/libs/ перед применением прокачай шаблоны;

uber_cat
()

Выбрал для себя в качестве редактора QtCreator. Он офигенно удобный! Заодно не надо будет привыкать к новому, если полезу в Qt. Спасибо за ответы.

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