Помогите, советом
От: stdcout  
Дата: 21.03.11 06:46
Оценка:
Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем.
Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".
c++ изучение помощь новичку нужен совет
Re: Помогите, советом
От: irbis3003  
Дата: 21.03.11 06:50
Оценка: 2 (1)
Здравствуйте, stdcout, Вы писали:

S>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем.

S>Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".

Изучи основы, а потом придумай себе какое-нибудь задание (типа графического редактора), в процессе создания которого будешь искать в литературе пробелы в знаниях.
Re: Помогите, советом
От: Socrat Россия  
Дата: 21.03.11 07:03
Оценка: 2 (2)
Здравствуйте, stdcout, Вы писали:

S>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем.

S>Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".

Попробуй MFC — по сути тот же WinAPI, только в виде классов C++.
Re: Помогите, советом
От: Ytz https://github.com/mtrempoltsev
Дата: 21.03.11 07:16
Оценка: 2 (1) +2
Не забивай голову MFC и WinAPI, а начни с Qt или wxWidgets.
Re: Помогите, советом
От: DarkEld3r  
Дата: 21.03.11 11:29
Оценка: 2 (2) +1
Если планируешь писать (только) под виндовс, то изучить винапи всё-таки полезно, имхо. Другое дело, что именно в изучении с++ это мало даст.
Re: Помогите, советом
От: LaptevVV Россия  
Дата: 21.03.11 11:38
Оценка:
Здравствуйте, stdcout, Вы писали:

S>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем.

А вам зачем? Вы студент?
Или собираетесь работать программером?
Или просто для себя?
От целей и направление возникает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Помогите, советом
От: stdcout  
Дата: 21.03.11 13:01
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, stdcout, Вы писали:


S>>Здравствуйте! Недавно начал изучать C++. До этого немного был знаком с Паскалем.

LVV>А вам зачем? Вы студент?
LVV>Или собираетесь работать программером?
LVV>Или просто для себя?
LVV>От целей и направление возникает.

Да, я студент. Специальность связанная с вычислительной техникой, но не напрямую с программированием. Изучаю для себя, потому что для меня это интересно, но также, чтобы в дальнейшем можно было работать. А вот насчёт направления — не имею никакого представления, в каком идти, и даже не знаю, в каком можно развиваться.
Re: Помогите, советом
От: sumkincpp
Дата: 21.03.11 18:39
Оценка: 2 (1)
Здравствуйте, stdcout, Вы писали:

s> Начало C++ далось довольно легко, так как учебник попался хороший. я затруднялся в выборе, как изучать дальше C++, так как опыта в программировании и знакомых программистов нет. Чтобы уметь писать программы "не в консоли", я начал читать про WinAPI. Книга также попалась довольно хорошая. Только, мне кажется, я сделал не совсем правильный выбор, так как это вроде чистый C. Но и прекращать знакомство с WinAPI мне не хочется, жаль будет потраченное время. Подскажите, пожалуйста, как и что изучать, чтобы было полезно: для приобретения опыта, для дальнейшего более подробного изучения самого C++, ну и для того, "чтобы писать программы с дружественным для пользователя интерфейсом".


Придумай какой-нибудь проект и думай какими целями/библиотеками можешь его написать(стоит приложить свою руку, например, к boost или poco). Если идей нет — можно посмотреть в ветке форума про работу какие задачи предлагают на собеседованиях.

В плане хороших книжек — многим сразу дается Джесс Либерти, "C++ за 21 день", в ней изложены все основы С++ — доступно, понятно и с примерами. Если хочется разобраться глубже, то можно почитать книги Мейерса, Александреску, Саттера.
avalon 1.0rc3 rev 380, zlib 1.2.5
Re: Помогите, советом
От: morm Россия  
Дата: 21.03.11 18:45
Оценка: 2 (1) -1
Здравствуйте, 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 и т.д. и т.п.

Ну и главное — пока студент, старайся домашние задания сводить к программированию.

З.Ы. На полноту источников не претендую, тапками не кидать
Re[2]: Помогите, советом
От: stdcout  
Дата: 21.03.11 19:46
Оценка:
Здравствуйте, sumkincpp, Вы писали:

S>Придумай какой-нибудь проект и думай какими целями/библиотеками можешь его написать(стоит приложить свою руку, например, к boost или poco). Если идей нет — можно посмотреть в ветке форума про работу какие задачи предлагают на собеседованиях.


S>В плане хороших книжек — многим сразу дается Джесс Либерти, "C++ за 21 день", в ней изложены все основы С++ — доступно, понятно и с примерами. Если хочется разобраться глубже, то можно почитать книги Мейерса, Александреску, Саттера.


Спасибо за совет)) С первой книжкой мне и так повезло — "Язык программирования C++. Лекции и упражнения" Стивена Праты ну и главы по некоторым темам из других учебников тоже просматривал. А вот, чтобы читать Майерса, Саттера, Александреску нужен опыт. А программы в консоли писать, если честно, не очень нравится. Вот и взялся за WinAPI, только там же чистый C — ООП не использовать, шаблоны тоже. Хотя не думаю прекращать изучать WinAPI, вроде полезная штука, пригодится. Но, чтобы не забыть C++ (классы, STL) тоже нужно что-то делать, а в WinAPI их вроде не получится использовать. Помнится, встречал я рекомендации в разных источниках после освоения основ WinAPI переходить к .NET.
Re[2]: Помогите, советом
От: Ytz https://github.com/mtrempoltsev
Дата: 22.03.11 06:45
Оценка: 1 (1)
Что не надо делать:

Здравствуйте, morm, Вы писали:

M>Почитать что-нибудь простое, типа Подбельский Язык С++, ну или в сети полно всяких простеньких мануалов


M>Берем книги с примерами и реализуем


M>Мозговой 85 Нетривиальных проектов, решений и задач


M>ну и там куча всего про MFC, ATL, WTL, wxWidgets и т.д. и т.п.
Re[3]: Помогите, советом
От: LaptevVV Россия  
Дата: 22.03.11 07:03
Оценка: 2 (1)
Здравствуйте, stdcout, Вы писали:

S>Да, я студент. Специальность связанная с вычислительной техникой, но не напрямую с программированием. Изучаю для себя, потому что для меня это интересно, но также, чтобы в дальнейшем можно было работать. А вот насчёт направления — не имею никакого представления, в каком идти, и даже не знаю, в каком можно развиваться.

Я самому себе задачи придумываю. Вот например. Написать программу для тестирования по какой-нить дисциплине. Тут столько вопросов по мере развития решать нужно:
1. Как хранить базу тестовых вопросов? Для начала можно сделать текстовый файл. Придумать структуру хранения. Типы вопросов. Потом перевести в бинарный. Потом — разработать структуру многофайловую. Потом присоединить СУБД. Если интересно, то рассмотреть вопросы шифрования.
2. Интерфейс. Сначала консоль. Но проги — две: одна для препода — занесение в базу вопросов, другая — для студня, отвечающего на тест.
3. Вопросы настроек. Вопросов в базе — дофига. Надо генерировать конкретные тесты для конкретной контрольной работы... Тут: сколько вопросов, по сколько из какой темы. Время: для каждого вопроса, общее время выполнения теста. Режим: безвозвратный, с возвратами к предыдущим.
4. Опять интерфейс — окна подцеплять. И для препода, и для студента. Много вариантов. Я б начал с более простой библиотеки вроде vxWidget. Ntv более, что есть свободная среда vxDevC++. Потом можно и переписать на Qt — будет опыт большого рефакторинга.
5. Проблемы оценивания результатов теста и сбор статистики.

С++ здесь — только инструмент. Который изучается по ходу реализации интересной проги.
Мне еще интересны вопросы системного ПО. Я для студентов книжку писал и там разрабатывал виртуальные машины, интерпретаторы, ассемблеры, отладчики, загрузчики, xUnit, библиотекарь. Проги вроде небольшие, но практику дают хорошую. А потом все это в интегрированную среду — вот и окошки. А подцепить опять же контроль знаний — вот тебе и СУБД для базы тестов.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Помогите, советом
От: carpenter Россия  
Дата: 22.03.11 08:08
Оценка: 2 (1)
Здравствуйте, stdcout, Вы писали:


S>Спасибо за совет)) С первой книжкой мне и так повезло — "Язык программирования C++. Лекции и упражнения" Стивена Праты ну и главы по некоторым темам из других учебников тоже просматривал. А вот, чтобы читать Майерса, Саттера, Александреску нужен опыт. А программы в консоли писать, если честно, не очень нравится. Вот и взялся за WinAPI, только там же чистый C — ООП не использовать, шаблоны тоже. Хотя не думаю прекращать изучать WinAPI, вроде полезная штука, пригодится. Но, чтобы не забыть C++ (классы, STL) тоже нужно что-то делать, а в WinAPI их вроде не получится использовать. Помнится, встречал я рекомендации в разных источниках после освоения основ WinAPI переходить к .NET.


Не путайте мягкое с теплым АПИ это АПИ а ЦПП это ЦПП , если взять для примера — то под винапи можно писать и на ассемблере и на басике и на цпп
и на чистом с.
ВИНАПИ — это всего лишь средство для взаимодействия с пользователем ( немного упрощенное описание ).
Во вторых , если вы планируете хоть немного писать под винду , знание как работать с винапи точно лишним не будет , но и в дебри тоже лезть не стоит,
поскольку чистый апи морально устарел уже ... но основы знать надо хотябы для отладки ( если вы пишете натив приложения)
Спокойно себе пользуйте и стл и буст если хотите .
Весь мир — Кремль, а люди в нем — агенты
Re: Помогите, советом
От: stdcout  
Дата: 22.03.11 17:43
Оценка:
Благодарю всех за советы и отзывчивость
Re: Помогите, советом
От: мыщъх США http://nezumi-lab.org
Дата: 22.03.11 18:22
Оценка: 3 (2)
Здравствуйте, 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.
Re[2]: Помогите, советом
От: Murlokotam  
Дата: 22.03.11 18:59
Оценка: 3 (3) +1 :))) :)))
Здравствуйте, мыщъх, Вы писали:

М>Здравствуйте, 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 с последним вычисленным выражением).


спасибо проблевался
Re[3]: Помогите, советом
От: мыщъх США http://nezumi-lab.org
Дата: 22.03.11 19:33
Оценка:
Здравствуйте, 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


и fact(666) равно...
(кстати, вычисляется практически мгновенно)
1010632056840781493390822708129876451757582398324145
4113404208073574138021036970229892028068014910120409
8980220355752703933970405713072930283454242384016585
6428740661530297972410682828699397176884342513509493
7874807749034933892552628783417618832618994264849446
5716169313138031111761957305152642332038964180541081
6067607893067483259816815364609828668662748110385603
6579732846048420780941415564277087453451005988294884
7250594907196772727091196506088520929434066550648022
6426083357901503097781140832497013738079112777615719
1162033175421999994892271447526670857967524826888504
6126373228453917614236582397369676453760327876932228
6708855475069835681643710846140569769330065775414413
0835010436595722994544465172428240021405551404642962
9100190143841467573055296491456926973403850076414055
1143642836128613304734147348086095123859660926788460
6711814692162522133746504995578317419505948271472256
9989641408869425126104519667256749553222882671938160
6116974003112642111561332573503212960729711781993903
8774163943817184647655275750142521290402832369639226
2434445697502405816736843180906854457725847298397943
7818072648213608650098749369761056961203791265363665
6646968022451999620400415444382103272104769822033484
5859609307929656956126740947391412413210205581149373
6199668788534872321705360511305248710796441479213354
5425835760765962502134546679688379960232731630690947
0042946710666392541958119313633986054565867362395523
1932399404809404108767232000000000000000000000000000
0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000
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.
Re[2]: Помогите, советом
От: stdcout  
Дата: 22.03.11 19:34
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>меня вот руби очаровал с первого взгляда. вот, смоторите какая программа: 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++, думаю, надо хоть немного освоиться.
Re[4]: Помогите, советом
От: Ytz https://github.com/mtrempoltsev
Дата: 22.03.11 19:38
Оценка:
Здравствуйте, мыщъх, Вы писали:

M>а как вам это? (если писать структурно). на плюсы не затруднит переписать?


М>
М>def fact(n)
М>  if n == 0
М>    1
М>  else
М>    n * fact(n-1)
М>  end
М>end
М>


Пожалуйста:

big_int fact(big_int n)
{
    if (n == 0)
        return 1;
    else
        return n * fact(n - 1);
}
Re[2]: Помогите, советом
От: Ytz https://github.com/mtrempoltsev
Дата: 22.03.11 19:46
Оценка: +1
Здравствуйте, мыщъх, Вы писали:

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


Справедливо для любого языка, особенно для С (без плюсов).
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.