| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > С чего начать? |
| Автор: ratu 11.8.2008, 01:55 |
| Нужен ваш совет. Есть опыт программирования в паскале и ВБ. до этого с С никогда не имел дела. т.е. начинаю фактически с нуля. Какой выбрать дистриб VC++, C++ Builder... чем они отличаются? какую книгу вы можете посоветова, чтобы все было описано подробно и с расчетом на новичка ( желательно в электронке). Заранее спасибо. |
| Автор: mrbrooks 11.8.2008, 07:35 |
| Самый главный совет - пользоваться поиском на форуме. Вротмненоги эта тема 100% уже поднималась и не раз. Ыыы |
| Автор: ratu 11.8.2008, 20:24 |
| гмммм. Я полистал форум. нашел выбор ide отдельно и выбор книг отдельно. НО! как-то там все сухо и скупо описано ( Поэтому и спросил тут. Так может кто-нить чем-нить помочь? с чего начинать?! |
| Автор: anatox91 11.8.2008, 20:46 |
| зависит от уже имеющихся у тебя знаний. Я, например, абсолютно ничего не понимая в программировании, начал с книги Герберта Шилдта "С++. Руководство для начинающих", и, хотя с первого прочтения некоторые аспекты я не совсем понял, книжка мне понравилась. Еще могу посоветовать книжку Стивена Праты "Язык программирования С++", там все разбирается очень подробно. Затем можешь прочитать книжку с таким же названием у Страуструпа, для того, чтобы лучше разобраться в некоторых тонкостях и сложностях языка. Ну а потом я думаю ты сам определишься в каком направлении двигаться дальше |
| Автор: LavYaAll 11.8.2008, 20:55 |
| ratu, я советую тебе взяться именно за Ms Visual C++, а не за Borland C++ Builder. Пойдет любой дистр версии 6.0 и выше. Насчет книг, очень неплохо для новичков написано в Х. Дейтел, П. Дейтел - Как программировать на C++. |
| Автор: bsa 11.8.2008, 21:34 | ||
Это называется медвежья услуга. Все что ниже 2003 версии брать не стоит (особенно, 6-ю версию), так как они не очень соответствуют стандарту С++. Более того, существует http://www.microsoft.com/express/vc/. Поэтому, зачем брать старьё? Кстати, рекомендую начать вообще с http://www.mingw.org и notepad'а. Так проще будет понять как оно все происходит. Кстати, http://www.codeblocks.org тоже не плох в качестве среды разработки. Особенно, учитывая размер дистрибутива. |
| Автор: ratu 11.8.2008, 23:15 |
| Гммм... Короче послушав, скачал Прата и Шилдта и плюс ко всему ВисуалС++ экспрес 2008. Что еще мне нужно для полноценного освоения языка? ЗЫ Чтобы новую тему не создавать, мот кто ответит нормально - в чем разница между С++, С, С#? |
| Автор: woof 11.8.2008, 23:29 | ||
да разница знаеш совсем небольшая , если не считать что все эти 3 языка АБСОЛЮТНО разные. |
| Автор: ratu 11.8.2008, 23:41 |
| блин.... я же попросил НОРМАЛЬНО объяснить. |
| Автор: woof 11.8.2008, 23:49 |
| а я те серьёзно C и C++ это абсолютно разные языки а С# это вообще другая песня или тебе подробно отличия? |
| Автор: ratu 11.8.2008, 23:51 |
| Ну так конечно подробно! я ж понять хочу именно в чем разница! |
| Автор: gcc 11.8.2008, 23:57 | ||
1. "как программировать на С" 2. "как программировать на С++" |
| Автор: ratu 12.8.2008, 00:38 |
вот тут выше господин один написал что это два разных языка С и С++. так зачем же мне эта книга? чем она мне поможет? |
| Автор: woof 12.8.2008, 01:18 |
| некоторые думают что типа надо начать с C а потом перейти на С++ я бы не советовал...... а лучше сразу С++ учить |
| Автор: ratu 12.8.2008, 01:28 |
| Хех... Так кто-нить может мне объяснить разницу между С и С++. С какого начать надо? какие принципиальные различия? и что такое С#? |
| Автор: mrbrooks 12.8.2008, 08:00 |
| есть мнение что сначала поднимаешь С++, затем уже С. Потом ответь на вопрос - а нафига оно тебе надо. |
| Автор: LavYaAll 12.8.2008, 09:51 |
| ratu, забудь пока про C#. Выучи С, потом C++. Но не наоборот. Есть навалом книг, в которых структура построена именно таким образом. Накачай их, бери себе студию 2003 и выше и не заморачивайся тем, что тебе пока не нужно. Только ниже 2003 не бери, те кто начинал с 6 неправильные программисты и мед у них тоже неправильный. PS. Если так интересны различия этих языков, то просто загугли их названия и почитай краткие сведения. |
| Автор: pycha 12.8.2008, 15:19 |
-это тоже язык програмирования |
| Автор: ratu 12.8.2008, 16:39 | ||||
гм... ну я понял, что ноты для баяна... Короче говоря, терь вопрос по делу ) Начал потиху читать. наткнулся на такой пример
и он есественно не пашет, потому как он, на сколько я понимаю, ищет значение EOF. а что это за значение? в таком варианте
код есественно пашет, но выдает же не конечное значение, а множество их. какое значание у еоф? почему код не воспринимает просто строку как законченную? |
| Автор: ratu 12.8.2008, 17:23 |
| А. походу разобрался. надо нажать Ctrl-Z и Enter. тогда он воспринимает это как конец файла и выводит нужное значение... |
| Автор: pycha 12.8.2008, 17:23 | ||
Надо в конце перед скобкой return 0; добавить
|
| Автор: SneG0K 12.8.2008, 17:38 |
| ratu, а че ты хочеш с ним делать? Знаеш на С можно писать под виндовс, под линукс, под МК, да хоть под калькулятор!!! Выучи синтаксис, а там уже начинай с рассмотрения систему в которой собрался писать |
| Автор: ratu 12.8.2008, 18:02 |
| Че делать с ним хочу? Писать спец. ПО, которого нету для окон ) а точнее, сам учусь в медицинском университете и нужно порой писать то, чего в помине нету или есть, но спереть нереально. Впринципе, хватало и ВБ, но эт скучно и грустно... поэтому решил на сях попробовать... ЗЫ Народ! и все-таки... я так и не понял, с чего начать?! С или С++?! |
| Автор: cutwater 12.8.2008, 18:22 |
| А ты почитай о каждом языке и для себя реши. Просто С++ почти!! включает в себя Си. Я лично начинал с плюсов, потом почитав особенности С стандарта, выучил и С. Добавлено через 51 секунду Главное четко понимать различия одного языка от другого!! |
| Автор: ratu 12.8.2008, 18:34 |
| А разве С сейчас где-то используется? в основном всегда слышу про С++. |
| Автор: cutwater 12.8.2008, 18:43 |
| А как ты думаешь ядро линукса на чем писано, ядро винды в том числе? При чем С поддерживается на ОЧЕНЬ большом количестве платформ. И у этого языка есть своя область применения... а то что ты слышишь, нужно проверять. Ибо говорят что и С++ умирает.. С# форева и так далее... |
| Автор: UniBomb 12.8.2008, 18:46 | ||
| ratu, Сначала был С. Это был великолепный язык программирования, позволяющий работать с железом. Потом появился дядечка Страуструп, которого неустраивали некоторые "недовозможности" языка. В часности то, что язык С всего-навсего процедурный (да к тому же ещё и линейный). Посему немного подумав дядька Страуструп прикрутил к С так называемые "классы". С тех пор язык начал называться "си с классами". Это нововведение всем пришлось по вкусу и стали дбавлятся новые вещи - например шаблоны. Дядька Страуструп проделал огромную работу по стандартизации языка, было включено много вкусностей (какие - сам потом узнаеш). Причём помимо нововведений Страуструп сохранял все достоинства языка С, так что - язык Си целиком и полностью является подмножеством языка С++ (я надеюсь все в институтах проходили множества?). И в конце концов появился тот С++ на котором мы сечайс пишем и который мы очень-очень любим.... Это был краткий камбек в историю... Теперь что касается С# - тут бельше могут подсказать дотнетчики, но в кратце всё выглядит так: Редмондвцы желая оставаться впереди планеты всей разработали технологию дотнет и придумали интерпритируемый язык как основной язык для программирования для дотнета. Из-за своей интерпритируемости программы работают намного медленее, чем программы написанные на С++, зависит от установленных .net Framework и от наличия виртуальной машины. Сам язык C# - это наследие лучших идей самых популярных языков, в котором урезаны многие характерные для того или иного языка особенности. Лёгок в использовании из-за огромной библиотеки классов и функций. Я бы посоветовал изучать С++, т.к. язык очень универсален, на нём можно программировать под любую платформу, исполнятся будет намного быстрее т.к. не требует виртуальной машины, не так уж и сложен в изучении. Теперь о среде и компиляторе - еси есть желание программировать ещё и под линукс (т.е. под обе системы) то я бы порекомедовал бы CODE::BLOCKS + GCC (mingw32 - порт под винду). Что касается вопроса:
|
| Автор: ratu 12.8.2008, 19:21 |
| = ) дождалсо... наконец хоть один более-менее полный ответ. Сенкс ) |
| Автор: bsa 12.8.2008, 19:56 |
| ratu, у языков Си и С++ разные области применения. Си - системный язык программирования, на нем пишутся ядра систем, драйвера, низкоуровневые библиотеки и утилиты. С++ - прикладной язык, на нем уже пишется прикладное ПО. Если в твои обязанности не входит написание драйверов, то твой выбор С++. Если требуется создавать оконные приложения, то однозначно! Очень рекомендую почитать еще о библиотеке QT (это в другом разделе), которая упростит тебе жизнь в этом нелегком деле. В любом случае, если ты изучишь С++, то перейти на Си будет очень просто. Но не наоборот! Поэтому не слушай тех, кто советует изучать сначала Си. Подозреваю, что они сами и половины особенностей С++ поэтому не знают (говорю так, потому что изучал сначала Си, и знаю, как трудно после этого освоить С++). |
| Автор: Lazin 12.8.2008, 20:23 |
можно не добавлять |
| Автор: ratu 12.8.2008, 20:31 |
| Такс... в итоге, что мы имеем... 1) Язык программирования С++ [Стивен Прата].djvu 2) codeblocks mingw (дляя eeepc) 3) Visual Studio 2008 express На первых парах хватит? |
| Автор: cutwater 12.8.2008, 20:51 |
Вот только если бы Вы не по брезговали бы использовать поисковик, google к примеру, то уже давно получили бы более полный ответ на свой вопрос. Ибо расписывать все прелести и особенности языков для большинства собеседником на мой взгляд обременительно. А набрать 2-3 слова в поисковике и прочесть пару статей для общего развития не сложно и намного полезней. Добавлено через 1 минуту и 21 секунду Для начала хватит вполне |
| Автор: UniBomb 12.8.2008, 20:56 |
Насчёт первой части - верный выбор, насчёт второй части - Прата не читывал, но есть такая книжка "Освой самостоятельно С++" от Либерти и Джонса. Так там описана наиболее полная картина причём очень простым языком. Всё буквально разжевано и разложено по полочкам. Есть конечно и минусы, но для начала на них можно не обращать внимания. Хороший выбор (насчёт первого - полезней будет (особенно когда углубишся в mingw), насчёт второго - популярнее) +1. Пусть человек сначала узнает что такое ООП, наследование, полиморфизм и иже с ними. Как проектируются классы вообще (и классы построения гуя в часности). Сейчас абсолютно бесмысленно заниматься изучением какой-бы то нибыло сторонней библиотеки... |
| Автор: pycha 12.8.2008, 21:06 |
| У Прата очень все хорошо разжевано. Одно что меня там смутило это 1150 страниц. -Читать очень много. Но зато там очень много примеров. |
| Автор: LavYaAll 12.8.2008, 21:25 | ||||
Странная позиция у вас - у кого иное мнение, тот дилетант. Это о чем-то говорит. Более глупого совета для начинающего я не слышал. Ага, пусть еще исходники STL проштудирует.
Есть такая книжка. У меня даже в печатном виде. Скажу честно, за 21 день по ней C++ не изучить, но она вполне хорошая и я также посоветовал бы ее автору. Кроме того, после прочтения ее можно использовать как полноценный справочник. Думаю, что статус - musthave. Качать можно тут: http://www.proklondike.com/contentview.php?content=23 |
| Автор: ratu 12.8.2008, 21:59 |
сенкс. скачаю. ) |
| Автор: bsa 12.8.2008, 22:59 | ||||||
Скажу одну вещь, операция преобразования кода с языка верхнего уровня на язык нижнего легка и непренужденна, а вот обратная - нет. Когда ты учишь язык программирования, ты начинаешь на нем формулировать в мыслях алгоритмы... Когда язык программирования предоставляет кирпичики, то ты алгоритмы сразу строишь из кирпичей. А при переходе к языку с панелями ты продолжаешь использовать кирпичи, так как твои изначальные алгоритмы (в уме которые) уже из них сложены. Простейший пример (из собственного опыта): если ты изучил ассемблер, а после пытаешься освоить что-нибудь высокоуровневое (си или паскаль), то тебе в первую очередь хочется понатыкать везде goto. Причем, вида if () goto label; И хвала тем, кто вовремя говорит, что этого делать нельзя. Это уже потом, можно объяснить, когда можно и нужно, но не на начальном этапе.
QT я посоветовал с целью освоения грамотно спроектированной библиотеки классов. Так как если человеку нужно будет делать GUI, то у него есть варианты: WinAPI, MFC, C++Builder, GTK, QT. Имхо, последнее лучший выбор. А тут уже не важно, начинающий ты или опытный. |
| Автор: ratu 12.8.2008, 23:07 | ||
а вот тут поподробнее. Есть какие-то особенности по реализации гуи? по сравнению с тем же бейсиком? т.е. тут просто нельзя добавить нужные элементы на форму и описать действия? |
| Автор: bsa 12.8.2008, 23:13 | ||
В С++ нет понятия GUI, форма и действия. В C++ Builder (бесплатный вариант зовется Turbo Explorer) это возможно. Более того, он и заточен изначально под "формошлепство". WinAPI - это стандартный сишный интерфейс создания GUI (очень много с ним мороки, проходил, знаю). Все остальное это внешние библиотеки, которые упрощают доступ к WinAPI, скрывая за классами. GTK, wxWidgets и QT кросплатформенные к тому же (т.е. существуют и на Windows, и на MacOS, и на *nix). У всех у них (ну, может кроме MFC) есть утилита для формошлепства. Думаю, не сильно совру, если скажу, что у QT она лучшая. |
| Автор: ratu 12.8.2008, 23:27 |
| Т.е. грубо говоря ) изначально в С++ нету фичи для гуи, а реализуется она надстройками, которые просто облегчают доступ к АПИ ос? |
| Автор: bsa 13.8.2008, 00:12 | ||||
Не совсем так. "Надстройки" существуют, но они не облегчают доступ. Под этим словом можно понимать нестандартные расширения языка (например, __fastcall, __property и __closure в C++ Builder). QT, GTK+ и пр. это библиотеки. Т.е. это код написанный кем-то и доступный для использования другими. Он не "облегчает доступ", он полностью скрывает WinAPI. Например, программа на QT, которая создаст окно с кнопкой выглядит так:
|
| Автор: ratu 13.8.2008, 00:18 |
| Жостка ))) После ВБ это какой-то кошмар ) но мне нравится... )))) Короче говоря, сначала осваивать просто С++, а потом уже браться за гуи? |
| Автор: piflit 13.8.2008, 01:00 |
| насколько я помню, return 0; - это код, который программа возвращает системе. и если этот код отличен от 0, значит, программа не завершилась должным образом или возникла ошибка. |
| Автор: anatox91 13.8.2008, 07:51 | ||
да, и если в main() такой инструкции нет, то компилятор автоматически подставляет успешное завершение программы, т.е. return 0; |
| Автор: cutwater 13.8.2008, 09:40 | ||||
Значит память не подвела Добавлено через 7 минут и 47 секунд
Да, не стоит учить все сразу. В итоге ничего не выучишь. А по подробнее ты узнаешь в гугле. Блин на той же википедии статьи на русском и о QT, GTK, MFC PS MFC - устарел, даже M$ от него отказались. Учить это убожише - только под страхом увольнения с работы, если заставляют на нем писать. Добавлено через 7 минут и 55 секунд WinAPI - это не только инструментарий для создания гуи. Это базовый интерфейс управления системой. Кроме GUI там еще есть множество функций... И на АПИ писат юзеринтерфейс, только для начала не плохо. Но для серьезных проектов - жестокий секс с мозгом. |
| Автор: bsa 13.8.2008, 11:15 | ||
Имхо, на нем писать интерфейс в принципе плохо (только если уже совсем по производительности приперло)... А в остальном полностью согласен. |
| Автор: ratu 13.8.2008, 18:09 |
| В общем всем сенкс ) буду грызть гранит ) |