Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем.
Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".
Здравствуйте, stdcout, Вы писали:
S>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем. S>Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".
Изучи основы, а потом придумай себе какое-нибудь задание (типа графического редактора), в процессе создания которого будешь искать в литературе пробелы в знаниях.
Здравствуйте, stdcout, Вы писали:
S>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем. S>Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".
Попробуй MFC — по сути тот же WinAPI, только в виде классов C++.
Здравствуйте, stdcout, Вы писали:
S>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем.
А вам зачем? Вы студент?
Или собираетесь работать программером?
Или просто для себя?
От целей и направление возникает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, stdcout, Вы писали:
S>>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем. LVV>А вам зачем? Вы студент? LVV>Или собираетесь работать программером? LVV>Или просто для себя? LVV>От целей и направление возникает.
Да, я студент. Специальность связанная с вычислительной техникой, но не напрямую с программированием. Изучаю для себя, потому что для меня это интересно, но также, чтобы в дальнейшем можно было работать. А вот насчёт направления — не имею никакого представления, в каком идти, и даже не знаю, в каком можно развиваться.
Здравствуйте, stdcout, Вы писали:
s> Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".
Придумай какой-нибудь проект и думай какими целями/библиотеками можешь его написать(стоит приложить свою руку, например, к boost или poco). Если идей нет — можно посмотреть в ветке форума про работу какие задачи предлагают на собеседованиях.
В плане хороших книжек — многим сразу дается Джесс Либерти, "C++ за 21 день", в ней изложены все основы С++ — доступно, понятно и с примерами. Если хочется разобраться глубже, то можно почитать книги Мейерса, Александреску, Саттера.
Здравствуйте, stdcout, Вы писали:
S>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем. S>Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".
Мне кажется, для студента изучающего С++ должно быть четыре этапа изучения:
1. Базовое знакомство
Почитать что-нибудь простое, типа Подбельский Язык С++, ну или в сети полно всяких простеньких мануалов
2. Практическое применение.
Берем книги с примерами и реализуем
Элджер Библиотека программиста С++
Сэджвик Р. Фундаментальные алгоритмы на С++. Части 1-4
Сэджвик Р. Фундаментальные алгоритмы на С++.Алгоритмы на графах.Diasoft
Мозговой 85 Нетривиальных проектов, решений и задач
Арт Фридман и компания. Архив программ. Код с комментариями
...
3. Углубление знаний, основы проектирования
Герб Саттер. Новые сложные задачи на С++
Мейерс Эффективное использование С++
Ален И. Голуб Веревка достаточной длины чтобы выстрелить себе в ногу
Герб Саттер, Андрей Александреску Стандарты программирования на С++. 101 правило и рекомендация
Андрей Александреску — Современное проектирование на C++
...
4. Изучение средств создания GUI(можно совместить с 3м этапом)
Qt 4. Программирование GUI на С++
ну и там куча всего про MFC, ATL, WTL, wxWidgets и т.д. и т.п.
Ну и главное — пока студент, старайся домашние задания сводить к программированию.
З.Ы. На полноту источников не претендую, тапками не кидать
Здравствуйте, sumkincpp, Вы писали:
S>Придумай какой-нибудь проект и думай какими целями/библиотеками можешь его написать(стоит приложить свою руку, например, к boost или poco). Если идей нет — можно посмотреть в ветке форума про работу какие задачи предлагают на собеседованиях.
S>В плане хороших книжек — многим сразу дается Джесс Либерти, "C++ за 21 день", в ней изложены все основы С++ — доступно, понятно и с примерами. Если хочется разобраться глубже, то можно почитать книги Мейерса, Александреску, Саттера.
Спасибо за совет)) С первой книжкой мне и так повезло — "Язык программирования C++. Лекции и упражнения" Стивена Праты ну и главы по некоторым темам из других учебников тоже просматривал. А вот, чтобы читать Майерса, Саттера, Александреску нужен опыт. А программы в консоли писать, если честно, не очень нравится. Вот и взялся за WinAPI, только там же чистый C — ООП не использовать, шаблоны тоже. Хотя не думаю прекращать изучать WinAPI, вроде полезная штука, пригодится. Но, чтобы не забыть C++ (классы, STL) тоже нужно что-то делать, а в WinAPI их вроде не получится использовать. Помнится, встречал я рекомендации в разных источниках после освоения основ WinAPI переходить к .NET.
Здравствуйте, morm, Вы писали:
M>Почитать что-нибудь простое, типа Подбельский Язык С++, ну или в сети полно всяких простеньких мануалов
M>Берем книги с примерами и реализуем
M>Мозговой 85 Нетривиальных проектов, решений и задач
M>ну и там куча всего про MFC, ATL, WTL, wxWidgets и т.д. и т.п.
Здравствуйте, stdcout, Вы писали:
S>Да, я студент. Специальность связанная с вычислительной техникой, но не напрямую с программированием. Изучаю для себя, потому что для меня это интересно, но также, чтобы в дальнейшем можно было работать. А вот насчёт направления — не имею никакого представления, в каком идти, и даже не знаю, в каком можно развиваться.
Я самому себе задачи придумываю. Вот например. Написать программу для тестирования по какой-нить дисциплине. Тут столько вопросов по мере развития решать нужно:
1. Как хранить базу тестовых вопросов? Для начала можно сделать текстовый файл. Придумать структуру хранения. Типы вопросов. Потом перевести в бинарный. Потом — разработать структуру многофайловую. Потом присоединить СУБД. Если интересно, то рассмотреть вопросы шифрования.
2. Интерфейс. Сначала консоль. Но проги — две: одна для препода — занесение в базу вопросов, другая — для студня, отвечающего на тест.
3. Вопросы настроек. Вопросов в базе — дофига. Надо генерировать конкретные тесты для конкретной контрольной работы... Тут: сколько вопросов, по сколько из какой темы. Время: для каждого вопроса, общее время выполнения теста. Режим: безвозвратный, с возвратами к предыдущим.
4. Опять интерфейс — окна подцеплять. И для препода, и для студента. Много вариантов. Я б начал с более простой библиотеки вроде vxWidget. Ntv более, что есть свободная среда vxDevC++. Потом можно и переписать на Qt — будет опыт большого рефакторинга.
5. Проблемы оценивания результатов теста и сбор статистики.
С++ здесь — только инструмент. Который изучается по ходу реализации интересной проги.
Мне еще интересны вопросы системного ПО. Я для студентов книжку писал и там разрабатывал виртуальные машины, интерпретаторы, ассемблеры, отладчики, загрузчики, xUnit, библиотекарь. Проги вроде небольшие, но практику дают хорошую. А потом все это в интегрированную среду — вот и окошки. А подцепить опять же контроль знаний — вот тебе и СУБД для базы тестов.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
S>Спасибо за совет)) С первой книжкой мне и так повезло — "Язык программирования C++. Лекции и упражнения" Стивена Праты ну и главы по некоторым темам из других учебников тоже просматривал. А вот, чтобы читать Майерса, Саттера, Александреску нужен опыт. А программы в консоли писать, если честно, не очень нравится. Вот и взялся за WinAPI, только там же чистый C — ООП не использовать, шаблоны тоже. Хотя не думаю прекращать изучать WinAPI, вроде полезная штука, пригодится. Но, чтобы не забыть C++ (классы, STL) тоже нужно что-то делать, а в WinAPI их вроде не получится использовать. Помнится, встречал я рекомендации в разных источниках после освоения основ WinAPI переходить к .NET.
Не путайте мягкое с теплым АПИ это АПИ а ЦПП это ЦПП , если взять для примера — то под винапи можно писать и на ассемблере и на басике и на цпп
и на чистом с.
ВИНАПИ — это всего лишь средство для взаимодействия с пользователем ( немного упрощенное описание ).
Во вторых , если вы планируете хоть немного писать под винду , знание как работать с винапи точно лишним не будет , но и в дебри тоже лезть не стоит,
поскольку чистый апи морально устарел уже ... но основы знать надо хотябы для отладки ( если вы пишете натив приложения)
Спокойно себе пользуйте и стл и буст если хотите .
Здравствуйте, stdcout, Вы писали:
S>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем. S>Начало C++ далось довольно легко, так как учебник попался хороший.
а вы уверены, что вам нужны имено плюсы? есть мнение, что на плюсах можно писать высокопроизводительный код, но практика показывает, что рядовой программист пишет на плюсах что-то громоздкое, тормозное, падучее, с учечками памяти и переполнениями буфера и _сильно_ отстающее по производительности не только от жабы, но даже и от интерпретируемых языков типа питона.
меня вот руби очаровал с первого взгляда. вот, смоторите какая программа: 12.times {|a| puts ' '*(12-a)+'*'*2*a}; после этого так мучительно возвращаться к циклам типа for(int a=0;a<12;a++), когда гораздо быстрее написать 12.times {}, не говоря уже за мелочи типа когда foo(a,b){return a+b;} ужимается до def foo a,b;a+b;end (т.е. неявный return с последним вычисленным выражением).
руби не только быстро учитится, но на него и спрос сейчас выше, чем на плюсы (во всяком случае в штатах), а вот руби плюс си -- это вообще супер. пишем критический код на си, компилируем и зовем его из руби, на котором пишем высокоуровневую обвязку.
> Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время.
winAPI следует использовать _только_ когда без него вообще невозможно. в остальных случаях следует абстрагироваться от платформы. вот я тоже когда-то ковырял WinAPI, а сейчас сижу в конторе, разрабатывая софт для линуха, благо пишу на ANSI C и потому он работает как на винде, так и на линухе. а еще есть маки. и их рынок достаточно обширен. а еще есть мобильные устройства, которых миллионы.
> Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, > для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать > программы с дружественным для пользователя интерфейсом".
интерфейс редко пишется на WinAPI, да и плюсы не самое лучше средство для этой цели...
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, stdcout, Вы писали:
М>меня вот руби очаровал с первого взгляда. вот, смоторите какая программа: 12.times {|a| puts ' '*(12-a)+'*'*2*a}; после этого так мучительно возвращаться к циклам типа for(int a=0;a<12;a++), когда гораздо быстрее написать 12.times {}, не говоря уже за мелочи типа когда foo(a,b){return a+b;} ужимается до def foo a,b;a+b;end (т.е. неявный return с последним вычисленным выражением).
Здравствуйте, Murlokotam, Вы писали:
M>Здравствуйте, мыщъх, Вы писали:
М>>Здравствуйте, stdcout, Вы писали:
М>>foo(a,b){return a+b;} ужимается до def foo a,b;a+b;end (т.е. неявный return с последним вычисленным выражением). M>спасибо проблевался
главное, чтобы не просрались! а как вам это? (если писать структурно). на плюсы не затруднит переписать?
def fact(n)
if n == 0
1
else
n * fact(n-1)
end
end
Здравствуйте, мыщъх, Вы писали:
М>меня вот руби очаровал с первого взгляда. вот, смоторите какая программа: 12.times {|a| puts ' '*(12-a)+'*'*2*a}; после этого так мучительно возвращаться к циклам типа for(int a=0;a<12;a++), когда гораздо быстрее написать 12.times {}, не говоря уже за мелочи типа когда foo(a,b){return a+b;} ужимается до def foo a,b;a+b;end (т.е. неявный return с последним вычисленным выражением).
Если честно, для меня данный код очень не привычен.
М>winAPI следует использовать _только_ когда без него вообще невозможно. в остальных случаях следует абстрагироваться от платформы. вот я тоже когда-то ковырял WinAPI, а сейчас сижу в конторе, разрабатывая софт для линуха, благо пишу на ANSI C и потому он работает как на винде, так и на линухе. а еще есть маки. и их рынок достаточно обширен. а еще есть мобильные устройства, которых миллионы.
я WinAPI начал изучать, так как читал, кто-то советовал, изучить основы WinAPI, а после желательно изучать .Net.
М>интерфейс редко пишется на WinAPI, да и плюсы не самое лучше средство для этой цели...
так я программированием увлёкся совсем недавно — полгода где-то И только месяца 2 назад начал читать про C++. Понравилось, особенно C-шный синтаксис, по сравнению с Pascal-евскм. А переходить на изучение другого языка не планирую — с C++, думаю, надо хоть немного освоиться.
Здравствуйте, мыщъх, Вы писали:
М>есть мнение, что на плюсах можно писать высокопроизводительный код, но практика показывает, что рядовой программист пишет на плюсах что-то громоздкое, тормозное, падучее, с учечками памяти и переполнениями буфера и _сильно_ отстающее по производительности не только от жабы, но даже и от интерпретируемых языков типа питона.
Справедливо для любого языка, особенно для С (без плюсов).