LINUX.ORG.RU

С++ с чего начинать реальную работу

 ,


3

6

Всем привет, очень надеюсь что вы сможете мне помочь.

Не так давно решил уйти из админства и податься в программисты. Очень нравится мне С/С++, но вот ведь незадача, непонятно что именно делать дальше. Суть проблемы в том, что во всех книгах описаны основные функции, циклы, классы и так далее, обычная программа не более 30-40 строк. То есть получается следующее:

1) Учим по книге синтаксис 2) ??? 3) Работаем на крупном проекте

Я сам всему учусь, я читал книги и вот мне совсем не понятен пункт 2. Я думал подключиться к какому-нибудь опенсорс проекту, править баги, писать документацию хотя бы, разбираться что там да как. Но на гитхабе я вижу огромные проекты с кучей разнообразных файлов и ничерта не могу понять. Где эта самая середина? Вот прочитал я пару книг по языку, что делать дальше? Может кто-то сталкивался с такой проблемой?



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

Не спеши с крупными проектами и опенсорсом. Начни с простых задачек и постепенно двигайся вперед.

anonymous
()

Следующий этап после изучения синтаксиса: Брюс Эккель, «Философия С++», оба тома. Только после этого — практика.

anonymous
()

пиши плеер. верный метод.

А вообще читай книги по конкретной области. игры там, сети, и пиши уже из этой области что-то

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

Вот в том-то и небольшая проблемка, писать консольные утилитки это одно, и это меня совсем не приблизит к написанию чего-то крупного. Я как раз-таки и пытаюсь найти что-то посередине, но у меня есть консоль-->пропасть-->большие проекты. Вот как попасть в эту середину я и не могу понять

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

Чтобы «попасть в пропасть» вам нужно определиться в какую пропасть вы хотите попасть :) Системное одно, гуйня другоё, гэйм-дев, мат. расчеты/экономика/анализаторы третье. Вы определитесь в какой области хотели бы работать. Что вас привлекает в реальной жизни, чтобы вы хотели улучшить, автоматизировать и т.д. и т.п. И если определитесь, вам смогут подсказать какую-нибудь простенькую (но вполне реальную) задачу в конкретной области. По вашему желанию, и по вашей возможности.

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

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

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

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

Тут и примеры и объяснения:

http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio.html

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

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

Ричард Стивенс - Unix Network Programming

Йон Снайдер - Эффективное программирование TCP/IP

основы же.

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

Вот к примеру не так давно слышал что студенты писали свой торрент клиент, на C, такое можно реализовать на C++? Чесслово, я хочу это сделать, но я понятия не имею с чего хотя бы начать, как я уже говорил, я могу в консольке решать всякие задачки, это ничего общего не имеет с теми же сетями и торрентами. Все книги которые я просмотрел - везде голая консоль, я чувствую что я что-то упускаю, что-то важное. Можете посоветовать какие-нибудь книги чтоб в эту область попасть? Сеть и в частности написание торрент клиента, вроде бы не выглядит как очень сложная задача

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

Вот к примеру не так давно слышал что студенты писали свой торрент клиент, на C, такое можно реализовать на C++?

Это стандартный пример в Qt, например:

http://doc.qt.io/qt-5/qtnetwork-torrent-example.html

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

О, вот за это огромное спасибо, это уже похоже на то, что я искал. Тогда попутно еще небольшой вопрос, чтоб написанное при помощи этой библиотеки прикрутить к графическому интерфейсу, как это можно сделать? Может быть есть какая-нибудь книжка или курс про GUI на С++?

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

на C, такое можно реализовать на C++?

С++ — надмножество С, поэтому, всё, что можно реализовать на С, по определению, можно реализовать на С++

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

Qt
стандарт де-факто

наркоман чтоли? к Qt вообще нужно аккуратно подходить, а то понахватаются, потом говнокодят.

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

Шикарно, Qt это именно то, что я искал, спасибо большое

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

А что не так с Qt? И если не оно, то какие еще есть варианты для прорисовки графического интерфейса?

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

мне кажется

Он имел в виду, что сперва необходимо научиться писать на плюсах, и только потом переходить к Qt. Если ты пишешь с использованием Qt, ты можешь не понимать, что происходит на самом деле, а это плохо.

А так, у Qt нет альтернатив на настоящий момент.

anonymous
()
Ответ на: мне кажется от anonymous

А, я понимаю о чем это и я не один из тех, кто любит по любому поводу впиливать библиотеки в рамдомном порядке

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

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

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

Ты хочешь C++, а Qt это библиотека для C++, на базе которой можно решать большой спектр задач - графика, сеть, БД и многое другое. Или ты собрался остановиться на детских helloworld-ах с консольным вводом? Совет использовать Qt 5 - не случаен, поддерживаю такой вариант.

Сначала начнешь с простых формочек, затем программы будут сложнее, затем они будут консольными. Впрочем, как хочешь.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Я хочу как-раз-таки уйти от «детских helloworld», но нигде не мог понять как это сделать. Вариант с Qt мне кажется просто идеальным и это как раз то, что я искал. Просто очень сложно найти подобную информацию самому

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

Если ты хочешь научиться C++, то читай толстенную The C++ Programming Language от создателя языка :-) И нужно не просто прочитать, а законспектировать и протереть до дыр :-) Ибо цепепе-программист - он не столько хороший программист, сколько хорошая зубрилка :-) По-мимо знаний непомерно сложного и не прощающего ошибок языка, необходимо знать и приёмы проектирования ПО конкретно для C++ - т.е. т.н. парадигмы и паттерны :-) Ибо если ты хочешь разбираться в чужом коде, то должен знать хотя бы основные методики, так сказать «борьбы» со сложностью, которые в цепепе, так сказать «решаются», паттернами :-) Последние описаны в книге т.н. «банды 4-х» и в Modern C++ Design от Александреску :-) Если хочется теории по ООП (утомительно), тогда можно почитать Буча :-) И вот когда ты освоишь и запомнишь всё это, научишься всем этим пользоваться, пройдёт много-много лет, и ты, скорее всего, будешь искать альтернативу цепепе :-)

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

Удваиваю. Сам начинал серьезно творчески применять язык(и API заодно) дописывая плагин.

FeyFre ★★★★
()

податься в программисты.

Для чего? :-)

Очень нравится мне С/С++

Почему? :-)

Вот прочитал я пару книг по языку, что делать дальше?

В зависимости от ответа на 1-й вопрос :-)

anonymous
()

читай гайдлайны и «историю и эволюцию С++» от страуструпа, чтобы понять почему так нелепо оно сделано, и почему «так получилось». а также что-нибудь заумное из буста — как не надо программировать на С++, с примерами из Александреску, например. и догадайся сам почему именно так делать не нужно

anonymous
()

Дурак штоле? Не иди в погромисты, там работать надо. Админом быть в сто раз лучше.

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

А заводы-то стоЯт! Одни «wanna be C++» погромисты кругом.

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

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

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

Ага, ведь редко какому цепепе-борщехлёбу по зубам ИДЕ и рантайм стоимостью в несколько тысяч у.е :-) Остаётся только завидовать и слушать гул вентилятора и греть ладошки, когда ИДЕ для цепепе производит реиндексацию для автокомплита :-)

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

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

"-Какие приложения вы написали?

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

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

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

Потому что мне это нравится, и всегда нравилось, только надо было на жизнь зарабатывать, а в моем родном городе программистов брали только из самых лучших ВУЗов, где действительно учили. А после моего универа дорога была везде закрыта. Поэтому и пошел админить, дальше было много всего, чинить телефоны и комплюктеры бухгалтерам, ставить им софт, потом с кассами работал, потом эникейство, потом админство, потом скриптование для линуксов/юниксов на перле. Мне нравился перл, а С/С++ и подавно нравился. И особенно мне понравилась разница между работой девелопера и админа, совсем разные подходы, вот и решил дальше переориентироваться из скриптовальщика в обычного программиста.

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

Очень нравится мне С/С++

Любофь зла :)

не понятен пункт 2.

К K&R по этому случаю прилагалась «практика программирования». С гитхабом просто можно клонить проекты и смотреть, как люди делают :)

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

Ну вообще я админом работал лет 5, потом системным инженером вот уже года 3, действующий RHCE к слову. Но нравится программирование, что поделать

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

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

Но почему именно C++? :-) Я тебя не отговариваю, просто не лучше ли научиться грамотно работать с C и Linux, например? :-) Вот, например, сегодня наткнулся на такую статью - http://eax.me/c-vs-cpp/ :-)

"-Какие приложения вы написали?

Отсюда следует, что нужно написать какое-нибудь приложение :-) Ну или библиотеку :-)

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

Ну не спеши :-) C++ - реально большой и сложный язык :-) Это не значит, что его нужно шарахаться или бояться, это значит, что нужно быть готовым провести перед мониторов долгие годы, чтобы ему научиться :-) Может быть стоит посмотреть на какой-нибудь JavaScript? В любом случае, каждый программист выбирает язык для *себя* - тот язык, на котором ему работается в удовольствие и программирование приносит плоды :-)

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

Анонимуса со смайликами не слушай, он местный дурачок и фанатик.

anonymous
()

Но на гитхабе я вижу огромные проекты с кучей разнообразных файлов и ничерта не могу понять.

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

annulen ★★★★★
()

1. Консольное приложение - совершенно не значит простое или плохое. Если хочется научиться проектировать и программировать логику, полезно сначала не отвлекаться на программирование гуев.

2. Поставь себе цель написать готовую полезную программу. Чтобы она не была слишком простой или слишком сложной и делала какое-то хорошее дело, даже если уже есть аналоги. Область совершенно не важна. Если есть какое-то хобби, можешь придумать что-нибудь из этой сферы.

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

4. Начинай решать каждую из этих маленьких задач.

5. На начальном этапе даже консольную программу полезно писать в стиле «библиотека + набор тестов».

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

Сегодня весь день писал на жабе, а вчера на обжектив си. Завтра за борщ наконец возьмусь. 😍

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

Ну тут еще дело в том, что я хочу работать по этому направлению. Вакансий С и Linux практически нет, с чистым C это разве что микроконтроллеры, а там нужна физика, которую я знать не знаю, нас в школе заставляли учебник по физике переписывать каждое занятие, первые кто переписал - тому 5, остальным 4. Поэтому и С++, потому что вакансии какие-никакие есть.

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

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

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

Спасибо за советы, именно так я и планирую поступить. Выше в этой теме мне кинули пример реализации торрент клиента на Qt, вот начну с этого, потом буду смотреть Boost.Asio и делать что-то на нем и Qt, а дальше уже как пойдет

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

Вакансий С и Linux практически нет, с чистым C
Поэтому и С++, потому что вакансии какие-никакие есть.

Где ты смотришь? :-) Мне в Linkedin регулярно приходят вакансии, в которых требование C/C++, Linux system programmin experience и всё такое :-) Не думаю, что если ты грамотный сишник, то тебя не возьмут туда, где нужно программировать на уровне ОС :-) А уж вакансий JavaScript как клиентского, так и для Node.js, вообще очень много :-) И для Java много :-) И для Objective-C полно :-) Ну а если тебе реально в кайф писать на C++, то тогда, конечно, C++ - твоё :-) Но я не знаю таких, кто сказал бы: «вай какой Си++ интересный, какой удобный, как с ним приятно работать и т.п.» :-) Я скорее слышу про него: «сложный, громоздкий, не удобный, но альтернативы ему нет, поэтому увы, приходится» :-) Фонатиков в расчёт я не беру, они необъективны, и для них главный аргумент - «твой браузер написан на C++!!!11» :-)

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