Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Изучение С++ в Linux


Автор: gguy 11.3.2006, 12:00
1.Постановка задачи:
Устроиться примерно через месяц (варьируемый параметр) на работу в качестве С++ программера (без опыта работы), желательно под Linux.

2.Комментарий к постановке(можно пропустить при первом прочтении):
Писал года 3 назад на VC++ 6.0 с MFC. Такие слова как virtual, templates, std не понимал. Год назад прошёл ради интереса успешно собеседование в одной фирме (МВ) на программиста linux, C++, oracle; фирма имеет дурную славу среди программистов, но уж больно вкусное место для начинающего. После собеседования благополучно забыл, что я - С++ программер; потом четыре месяца мучил деканат родного физфака. Оставшееся время возился с Gentoo. Перепробовал немножко скритовых языков: tcl, python, perl, lisp. Сейчас решил снова заняться поиском работы. Беглый обзор вакансий в интернет показал, что чаще других требуется C/C++ программист и чаще других берут неопытных С/С++ прогаммистов без портфолио (наверное, это связано с тем, что С/С++ не для домашних проектов, то есть кроме как на работе портфолио наполнить трудно). С++ ближе к машине и дальше от тупых людей, чем например perl. Потому C/C++.

3.Что я делаю сейчас по этому поводу.
Скачал Страуструпа 3-е издание ангилйское в pdf (медленный поиск, нельзя юзать grep ). Скачал c++-faq-lite. То есть, некоторый набросок на среду существования есть (vim как всегда рулит).

4.НЕ ЗНАЮ ЧТО ПИСАТЬ.
Нужен какой-нибудь небольшой проект, не откровенно учёбный и не такой маленький как упражнения в Страуструпе. Чтобы Страуструпа использовать скорее как справочник, а не как учебник. Чтобы попользоваться: virtual, templates, std, make, ld и т.п. Подскажите?

5.(Поскольку вряд ли кто ответит кроме меня на предыдущий пункт.)
Какие программы в linux написаны с использованием C++(не C)? Можно конечно напустить grep на все тарболы дистрибутива, дав ему понюхать что-нибудь вроде "#include<string>", но может есть не такие радикальные способы? Может готовые списки в интернет?

6.Списки TODO для C++ программеров?

Автор: MAKCim 11.3.2006, 12:10
Цитата

Нужен какой-нибудь небольшой проект, не откровенно учёбный и не такой маленький как упражнения в Страуструпе. Чтобы Страуструпа использовать скорее как справочник, а не как учебник. Чтобы попользоваться: virtual, templates, std, make, ld и т.п. Подскажите?

напиши эмулятор обобщенной машины, которая будет исполнять программу, которая в нее грузится (машины Тьюринга, Шенфилда и т. д) причем сама машина не должна знать какая конкретно программа в нее грузится
(сам сейчас этим занимаюсь)
тут тебе и виртуальность, и шаблоны (основной код), и использование стандартных алгоритмов, контейнеров (std)
Добавлено @ 12:13
а вообще в Страуструпе довольно неплохие упражнения

Автор: DRUID3 11.3.2006, 12:29
Цитата(gguy @ 11.3.2006, 12:00 Найти цитируемый пост)
4.НЕ ЗНАЮ ЧТО ПИСАТЬ.
Нужен какой-нибудь небольшой проект, не откровенно учёбный и не такой маленький как упражнения в Страуструпе. Чтобы Страуструпа использовать скорее как справочник, а не как учебник. Чтобы попользоваться: virtual, templates, std, make, ld и т.п. Подскажите?


ИМХО так нельзя. Реальную задачу, где используются все C++ трюки и поставить то, думаю, невозможно. Все это возникает в процессе выполнения поставленной задачи при попытке оптимизации по быстродействию, использованию памяти, стремлению к универсальности и удобочитаемости кода... Неужели Вам от ЭВМ ничего в жизни не надо? Ставите полезную СЕБЕ задачу, и вперед. А Страуструпа то только как справочник и используют, кто же по такому учится. А Вы читайте С.Б.Липмана, С.Девиса и А.Крупника (советую)... И еще, многие прикладники (например спецы по цифровой обработке 2-D изображений, обработке сигналов, автоматизации и робототехнике) никогда не используют весь арсенал наворотов C++, т.к. им главное получить устойчиво работающую с заданными параметрами программу, а не шедевр для студенческих олимпиад. Их базис знаний просто смещен в другую сторону, а для оптимизации есть другие специалисты (все программеры важны... smile ) Так что думайте, что Вам надо. Тем более что Вы - физик. Может подадитесь в ЦОС или, хотя бы, микроконтроллеры. Пригодится специализированная подготовка, а вот в Win или Lin вряд ли...

Цитата(gguy @ 11.3.2006, 12:00 Найти цитируемый пост)
5.(Поскольку вряд ли кто ответит кроме меня на предыдущий пункт.)
Какие программы в linux написаны с использованием C++(не C)? 

Смешной Вы smile ...

Автор: MAKCim 11.3.2006, 12:50
Цитата

Смешной Вы

ну почему, в Linux-е действительно большинство системных программ (в том числе ядро) на C написаны
Цитата

5.(Поскольку вряд ли кто ответит кроме меня на предыдущий пункт.)
Какие программы в linux написаны с использованием C++(не C)? 

ну KDE, gnome, прикладные программы (в основном которые требует GUI) smile

Автор: bilbobagginz 11.3.2006, 13:24
2Максим:
ну извини меня, пока у человека без навыков Си дойдет пыхтелка до кода в режиме ядра....
большинство приложений в линухе пишется в зависимости от поставленной задачи.
А огромное кол-во полезных больших приложений пишется на нескольких языках.

а теперь о главном
2gguy:
по пунктам..
Цитата

1. Постановка задачи:

Если ни бум бум ( т.е. без практики, т.е. НАВЫКОВ ) - не позорься, один раз прогоришь, трудно потом рекламу стереть (не из опыта). программирование - не наука а прикладное ремесло. Теоретически всегда правильнее писать правильно и по книжке, но на практике так не делают всегда.
все инструменты которые ты описал имеют смысл в больших приложениях состоящих из похожих частей, или при написании библиотек.

2."фирма имеет дурную славу среди программистов" - не понял.
"С/С++ не для домашних проектов" - пардон, мсье это фигня.
"С++ ближе к машине и дальше от тупых людей, чем например perl"
можно вам показать объектно-ориентированный код на перле.

3. не мрахай тозги. надо писать программы.

Цитата

4.НЕ ЗНАЮ ЧТО ПИСАТЬ.
5.(Поскольку вряд ли кто ответит кроме меня на предыдущий пункт.)
Какие программы в linux написаны с использованием C++(не C)? 

во первых: google.
во вторых: я не знаю как на вашем физфаке общаются с внешним миром (читай: учеными мира) , но если как надо - то как минимум английский знать должен. есть такой "небольшой" сайтик по имени www.sourceforge.net, на котором гостят как минимум 50% открытых проектов. И поверь, большинство из них не разрабатывается супер про кодерами. поковырайся-ка там, выбери проект, и вперед.
(там можно сделать запрос и по языку программирования )

Цитата

6.Списки TODO для C++ программеров?

Код

while ( ! знаешь_язык_до_нужного_тебе_уровня() ){
    писAть код; 
    читать книги;
}
while( 1 ) писAть код; 


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

Автор: MAKCim 11.3.2006, 13:46
Цитата

Код

while ( ! знаешь_язык_до_нужного_тебе_уровня() ){
    писAть код; 
    читать книги;
}
while( 1 ) писAть код;


smile
Добавлено @ 13:52
Цитата

ну извини меня, пока у человека без навыков Си дойдет пыхтелка до кода в режиме ядра....

нет, это я к вопросу
Цитата

Какие программы в linux написаны с использованием C++(не C)?

и ответу на него DRUID3
Цитата

Смешной Вы

вопрос то вполне был корректный и даже не смешной smile

Автор: gguy 11.3.2006, 14:29
Спасибо всем. Я читаю, не хочу спорить. Не спорьте пожалуйста друг с другом. Если мне что-то непонятно - сам спрошу.

Насколько я понимаю, "эмулятор обобщенной машины, которая будет исполнять программу, которая в нее грузится " - это вроде компилятора. Отдаю предпочтение чему-нибудь вроде генетических алгоритмов и мультиагентных систем.

На данный момент насчитал только 11 записей c "С++" в разделе "help wanted" на sourceforge. Это нормально, или я не там смотрю?
По немецкому у меня условно 5, а вот письменный английский боюсь может испортить те 1 - 3 приемлемых варианта, которые на sourceforge? isppel и diction юзаю, но достаточно ли этого?

Автор: bilbobagginz 11.3.2006, 14:42
1. насчет сорсфоржа - язык нужен для общения с разртаботчиками. (ну не все американцы/французы/китайцы знают русский язык smile smile smile )
2. Help is ALWAYS WANTED. ( если написано, что "help wanted" - это значит что есть части, разработка которых уже стоит из-за нехватки рабочей силы ) в большинстве проектов - help needed, просто они все потихоньку разрабатывают.

выбери подходящий себе проект.
ознакомься с его кодом (что само по себе не всегда тривиально), а потом все просто:
посмотри на баги в buzilla/другой системе отлова багов, и начинай их чинить.

когда у тебя будет свой патч/модуль - свяжись с координатором проекта и скажи:
"я вот тут написал, мне бы влить это в основное дерево...это решает баг 1,2,...,N"
он посмотрит, вольет твой код, и даст тебе счет на CVS/SVN проекта.
с этого момента ты уже будешь полноправным участником.
т.е. в начале говори кодом и патчами.
потихоньку и английский подучишь. поголовно все пользуются либо масянями либо асями либо яху, или IRC. при такого рода общении удобно знать язык, в противном случае общение с тобой будет немного медленнее ( но не невозможным )

пока,
удачи.

Автор: gguy 11.3.2006, 15:14
Вот теперь другое дело smile Да здравствуют хобиты! С++ (17542) Parsing started... foreach (1..17542) { parse}

Автор: bilbobagginz 12.3.2006, 01:25
не советую делать парсинг на все проекты (умирают раньше).
выбери себе интересную тебе нишу, и туда GPS настраивай.
пока.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)