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)

1) Есть ли какие-то годные IDE?

QtCreator

2) Где лучше почитать про системы автоматической сборки

оф. документация

3) Какие принципиальные отличия в реализации «стандартной библиотеки» цэпэпэ между Win и Lin?

есть стандарт:

http://www.cplusplus.com/reference/

его и используй, если надо что-то сверх, то есть тот же Qt

4) Где отдельно почитать про C++ Boost,

не стоит

wota ★★
()

1. vim/emacs; geany; man make

2. google «gnu makefile manual», первая ссылка. Можно поискать что-нибудь вроде makefile howto, для знакомства.

2.2. Сначала разберись с мейкфайлами и собери хотя бы пять своих проектов. Потом можно к autotools (но лучше, намного лучше - Cmake) переходить.

3. Принципиальных различий нет. Ссылку на референс уже дали, там описан стандарт.

4. На stackoverflow, например, много реальных примеров. Не тащи в проект такого бегемота, если не уверен, что без него не обойтись. А overview легко гуглится.

E ★★★
()

1) Есть ли какие-то годные IDE?

Годный Eclipse CDT, но судя по каше в твоем посте, тебе оно не надо, бери QtCreator.

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

make - это утилита для сборки в принципе, cmake - уже ближе к понятию «автоматической сборки». Почитать можно в гугле очень много и даже на русском.

2.2) Где в целом почитать про организацию исходников таким образом, чтобы можно было собрать на любой linux-машине

Научись пользоваться autotools или cmake и никогда жестко не задавай пути в Makefile.

функции в духе getch() в Lin отсутствуют (по непонятной мне причине)

Потому что это расширение от MS, а нифига не стандарт.

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

В книге Страуструпа ничего про boost нет. Документация по boost есть (как ни странно) на его собственном сайте. Кстати зачем тебе boost, если ты даже не знаешь, что это такое?

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

4) Где отдельно почитать про C++ Boost,
не стоит

Почему, кстати? С С++ большого ничего не делал, но спрашивал у крутышек, говорили нормально и нужно.

anonymous
()

Есть ли какие-то годные IDE?

Vim. QtCreator

В общем, не шарю,

Не шаришь, как работает компилятор? Не умеешь писать make файлы? Не знаешь чем статик линковка отличается от динамической? Что происходи, когда ты инклюдишь? Да зачем ты вообще в C++ нужен. Имхо, если ты не работал с gcc и gdb из консольки вручную - ты не программист с++. Начни с vim+gcc+gdb, когда дойдешь до уровня qt, переходи на qtcreator, с автоматической сборкой и встроенным отладчиком

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

Найти в интернете документацию?

Какие принципиальные отличия в реализации «стандартной библиотеки» цэпэпэ между Win и Lin?

Нет упоротого WinAPI

цэпэпэ

coderage ★  К логопеду, школьник!

Где отдельно почитать про C++ Boost

В документации? Осиль сначала С/С++, затем STL, а потом уже QT и boost

Планирую пополнять тред вопросами.
Хочу в C++.

Но C++ в тебя не хочет!

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

wota, E, m0rph

Спасибо, ребята. Буду разбираться. Пока мне хватит. Попробую QtCreator, кстати. Много про него хорошего слышал.

И эти люди критикуют vim.

Прямо критикую vim? Всего лишь лично мне он не подходит.

Почему, кстати? С С++ большого ничего не делал, но спрашивал у крутышек, говорили нормально и нужно.

На серьезных проектах, наверное. А пока все маленькие и в песочнице - то и не надо.

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

Сколько агро :) ЛОР, чо.

ты не программист с++

Как будто все «программисты С++» с рождения были «программистами С++». Спасибо за ответ.

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

«Программисты С++» стали программистами C++, благодаря той «консольной возни», которой ты решил пренебречь.

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

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

Нислужил - ни мужик!!!!!!!!

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

Почему, кстати?

a) шаблоны на шаблонах и шаблонами погоняют, спроси у «крутышек» чем это плохо
б) среднестатистический код на бусте выглядит так:

http://www.boost.org/doc/libs/1_55_0/libs/chrono/example/simulated_thread_int...

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

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

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

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

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

Я не про стандартную библиотеку, а про разницу программирования на с++ под линукс и винду. То что стандартная библиотека эквивалента - очевидно.

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

comp00

Я решил ей пренебречь на время, пока я читаю первую за 8 лет книгу по С++, который я по сути не знаю и хочу узнать, т.к. начал учить Си и ушел в web почти на десяток лет. Я не настолько тупой, как тебе кажется. Просто мне нужен быстро-решительный инструмент, чтобы тупо делать упражнения из книги, а уже после - всё остальное. ИМХО, тупо начинать с vi и make, если просто посмотреть как работает cin/cout/if/for. Тем не менее, спросил на будущее, чтобы треды не плодить.

yoghurt

Вообще говоря, именно getch() лежит в именно conio.h. Что за conio такой, я не задавался вопросом никогда, но похоже, что это и правда что-то виндовое.

coderage
() автор топика

1) Emacs

2) http://www.gnu.org/software/make/manual/html_node/index.html

2.2) http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_autom... (но вообще сейчас CMake в ходу)

3) Стандартная библиотека и в африке стандартная. И при чём тут getch(), когда речь идёт о С++?

4) Boost - это всего лишь набор весьма разношерстных библиотек, написанных разными авторами. Поэтому документацию читай уже по конкретным, которые тебе нужны. Но сначала лучше язык осилить. Не знаю, что ты там слышал про Страуструпа, но часть буста просто была перенесена в новый стандарт (т.е. теперь в std::), может это.

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

Научись пользоваться autotools или cmake и никогда жестко не задавай пути в Makefile.

и вообще не пиши Makefile. Возьми нормальную систему сборки.

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

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

вся прелесть нормального подхода в том, что можно совмещать «функционал» (с) и читабельность, простой пример:

std::string str( "abc def krfrf" );

str.erase( std::remove( str.begin(), str.end(), ' ' ), str.end() );

и

QString str( "abc def krfrf" );

str.remove( ' ' );

может и есть психи, которым первый вариант ближе, но объективно второй вариант проще

wota ★★
()
Последнее исправление: wota (всего исправлений: 2)
Ответ на: комментарий от wota

Есть «психи», которые до сих пор пишут на C++ без Qt и второй вариант им просто ни к чему.

P.S. Пара remove+erase более юниксвей

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

тупо начинать с vi и make, если просто посмотреть как работает cin/cout/if/for

Ну, ок, начинай сразу с IDE, а потом кричи про дырявый С++, отсутствие защиты от выстрела в ногу, etc
С++ это тебе не веб, тут мало знать, тут надо понимать. Понимать как выделяется память, происходит линкование, собирается проект.

тупо делать упражнения из книги

И какой от этого профит?

Тем не менее, спросил на будущее, чтобы треды не плодить.

На будущее я написал тебе пр QtCreator. Но это на очень далекое будущее.

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

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

Нислужил - ни мужик!!!!!!!!

А еще приличный прогер не приводит дурацких аналогий.

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

Я с тобой согласен.
Qt это отдельный вообще разговор.
Но и ванильный C++ нужен не только для того, что бы начать писать на Qt

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

Есть «психи», которые до сих пор пишут на C++ без Qt и второй вариант им просто ни к чему.

дело не в Qt, это просто пример разных подходов, к примеру никто не мешает добавить такой вариант std::remove:

std::remove( str, ' ' );

который «раскроется» в то, что было выше, если ты этого не понимаешь и/или не приемлешь - дело твое

P.S. Пара remove+erase более юниксвей

ты поди на ЛОР сообщения через curl отправляешь? :)

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

1) Весёлые тексты ошибок
2) Видел, немного копаясь в графо-библиотеке
Те. сильно усложняет разработку и сложнее искать работников?

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

Те. сильно усложняет разработку и сложнее искать работников?

искать работников не сложно, а вот читать после них код - редкое «удовольствие»

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

Ну и зачем засорять стандарт узкоспецифичными функциями, когда то же самое можно сделать обобщёнными?

yoghurt ★★★★★
()

QTCreator и все вопросы отойдут

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

Ну и зачем засорять стандарт узкоспецифичными функциями, когда то же самое можно сделать обобщёнными?

чтоб писать простой и читабельный код, а не лапшу

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

да ты просто не видел лапшу, по ходу :)

ты так говоришь, будто это что-то плохое :)

wota ★★
()

1) ba/da/sh, vim/emacs/geany, qmake/cmake, тысячи их.*

2) man man.*

3) пиши по стадтарту. не используй компиляторы, не подерживающие стандарт.*

4) Внезапно на сайте буста.*

*www.linux.org.ru/search.jsp

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

дурацких аналогий

М-м-м-мои годы пердоления консолькой!!!! Да как он смеет!!!!! Миня всего трисет!!!!!

Deleted
()

1. IDE при обучении больше путает нежели помогает. Возьми лучше божественный vim и забиндь вызов make на хоткей. Отлаживать можно в gdb, ловить УТЕЧКИ в valgrind.
2. Просто загугли, доков и примеров использования навалом. Бери сразу cmake конечно.

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

Нет, я хочу, чтобы вы наконец поняли, что ничего лапшеподобного в

auto it = std::remove(s.begin(), s.end(), c);
s.erase(it, s.end());

нет и не было.

yoghurt ★★★★★
()

Планирую пополнять тред вопросами

Не надо. Заданных вами вопросов и так хватит на 3 года обучения.

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

ничего лапшеподобного

s.begin(), s.end()

в подавляющем большинстве случаев при работе с STL нужно именно begin() + end(), т.е. весь контейнер

auto it = std::remove(s.begin(), s.end(), c);
s.erase(it, s.end());

аналогично, почти всегда надо именно remove + erase, итого имеем, что практически всегда ты пишешь лишний код, и во имя чего? только чтоб облегчить жизнь авторам стандарта? ну героический поступок, чо

wota ★★
()

Где взять инфу о различиях?

просто возьми Qt =)

anon1984
()

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

по поводу «одной кнопки»: да, у меня F9. Собирает, линкует, сохраняет в DVCS, шифрует банку, и делает бекап в облаках. Vim forever.

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

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

man, /usr/doc, google.it

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

man automake. Под кучу дистров пусть голова у маинтейнера болит.

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

getch() это что-то нестандартное маздаевское. Есть стандартный getchar(3).

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

освой сначала простой C++ и STL

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

в подавляющем большинстве случаев при работе с STL нужно именно begin() + end(), т.е. весь контейнер

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

аналогично, почти всегда надо именно remove + erase, итого имеем, что практически всегда ты пишешь лишний код, и во имя чего?

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

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