| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > C чего начать C++ ? |
| Автор: denes 6.6.2010, 15:18 |
| Скажите с чего начать C++ писать ? |
| Автор: Ozerich 6.6.2010, 15:30 |
| http://forum.vingrad.ru/topic-287943.html |
| Автор: denes 7.6.2010, 15:53 |
| изучение !!! |
| Автор: djamshud 7.6.2010, 16:33 |
| С C. Добавлено через 11 секунд То есть с си. |
| Автор: azesmcar 7.6.2010, 16:53 |
Может НА C++ писать, или ты компилятор писать собрался? С чтения книг естественно. зачем? |
| Автор: djamshud 7.6.2010, 17:08 |
| >зачем? Потому что он во-первых дает отличное понимание работы не только системы без погрязания в асм, но и языка (указатели, константность, static-и, extern-ы, что там еще,..). В учебниках по плюсам на это просто кладут болт, говоря "результат этой конструкции - такой", а как и почему - не ваше дело. Лично мне было не легко работать с с++, не понимая сути многих происходящих в нем вещей, выучил си и наступила благодать. Во-вторых, на чистом С++ решают только сферические задачи в вакууме, а на практике все узкие места обсчитывают если и на С++, то на максимально приближенном к си (минимум классов, работа с буферами памяти и т.д.). |
| Автор: djamshud 7.6.2010, 17:26 |
| >если в узких местах и вправду требуется высокая производительность то да, но таких задач меньшинство, в основном на современных компьютерах это уже не важно. Вы судя по всему пишите исключительно прикладнуху исключительно для ПК. Но софт пишут далеко не только, чтобы потыкать в него пало^Wмышкой. Поэтому в общем случае лучше уметь писать и на первом, и на втором, а дальше уж как жизнь повернется. А так как си раскрывает глаза на многие моменты с++, лучше начинать именно с него. >смотря какой учебник. В общем согласен. Я когда его учил (зная только JavaScript:) ), просто не осиливал фундаментальные труды Страуструпов. А с си начать не было возможности. >вместо использование конструкций C++ люди пишут sprintf, atoi и тому подобное Так это неверное сочетание языков. Нужно разбивать языки по модулям или функциям. Хотя сам я приверженец %printf-ов Добавлено через 2 минуты и 30 секунд >стараюсь вообще избегать там, где это НЕ необходимо Ну это правильно, я не спорю. |
| Автор: azesmcar 7.6.2010, 18:18 | ||
Прикладуху вообще не пишу, в основном серверные приложения, но все равно, подавляющее большинство современных программ оптимизации на таком уровне не требуют. C, C++ - разница в скорости не такая большая, чтоб она была как-то заметна на современных машинах. К примеру последний случай, который я привел в пример, там программа должна была запускаться на аппарате а не на компьютере, разница между C и C++ была значительной на аппарате со слабым процессором, но на компьютере она была абсолютно незаметной. Сейчас уже многие на C# переходят и пишут на нем не только прикладные программы и нормально. Другое дело если пишешь библиотеку для общего пользования, пусть будет для примера библиотека обработки изображений, такие вещи лучше писать на C, так как неизвестно где будет использована библиотека и для каких нужд. В общем все зависит от задачи. |
| Автор: djamshud 7.6.2010, 18:43 |
| azesmcar, все зависит от задачи, о чем и речь. И сервера разные бывают. Одно дело, когда там запущена одна какая-нибудь жирная буйня, ворочается - и фиг с ней, а другое - когда там несколько тысяч процессов, которым бы побыстрее отработать и сдохнуть. Я про ПК спросил, потому что фраза "сейчас процессоры стагигагерцевые и двестиписятшести ядерные - да я хоть на баше писать буду" популярна именно у всяких рисовальщиков окно-софтинок. На серверах железо частно не обновляется по десять лет. Добавлено через 3 минуты и 39 секунд Ну и ваш же пример с библиотекой очень хороший. Библиотека далжна быть максимально эффективной при минимальной сложности. Как я могу судить, в данный момент это си + плюсовый интерфейс. |
| Автор: azesmcar 7.6.2010, 19:08 | ||
Большинство современных программ нуждаются в базе данных, сетевом взаимодействии и подобных вещах, говорить об оптимизации C++ -> C в программе, работающей с БД не имеет смысла, потому я сказал, что этих задач - меньшинство, можно запросто лет 10 программировать и не столкнутся с надобностью оптимизировать программу до такого уровня, сейчас важнее оптимизировать БД, правильно построить таблицы, оптимизировать алгоритмы...да и вообще-то речь не совсем об этом, я хотел сказать то, что принцип построения программного кода совершенно разный в Си и в Си++, goto, макросы, структуры, указатели на функции, всяческие касты, void* - это все то, что не дает красивые решения в Си, но не рекомендуется использовать в C++, а в C++ есть STL, boost, шаблоны, классы ... все то, чего нет в C, это принципиально разные языки, знать и то и другое конечно не помешает, но я считаю С никак не поможет в изучении C++, т.е. если цель - программировать на C++ - с него и надо начинать. |
| Автор: kemiisto 7.6.2010, 20:03 | ||
У меня спазм. От смеха. Начать надо с осознания того факта, что не надо даже начинать писать на С++. Выбрать что-то более богоугодное. Вначале для обучения, затем (если будет необходимость) для работы. |
| Автор: ИванМ 7.6.2010, 20:57 |
| Смотря с какой ОС вы хотите работать. Если для линукса, то можно его поковырять. Аналогов пока нету. Mono и проч. байда пока не работают как надо. Если под винды, то лучше изучать, например, C#, т.к. он сейчас очень популярен и набирает обороты. Но, смотря, конечно, какие у вас цели. |
| Автор: Abyx 7.6.2010, 21:02 |
| Лучше не начинать. |
| Автор: boostcoder 7.6.2010, 21:06 | ||||
вроде взрослый человек, а все троллите...письками меряетесь.. эх... |
| Автор: kemiisto 7.6.2010, 21:06 |
Для каких задач нету аналогов на *nix? |
| Автор: djamshud 7.6.2010, 21:12 |
| >вроде взрослый человек, а все троллите...письками меряетесь.. эх... Если пиписьками не меряться, они перестают расти! Ну что вы, как маленький в самом деле. >Для каких задач нету аналогов на *nix? Присоединяюсь к вопросу. |
| Автор: boostcoder 7.6.2010, 21:14 |
пруфлинк пожалуйста. |
| Автор: djamshud 7.6.2010, 21:19 |
| boostcoder, мог бы пруфпик показать, но его удалят, а меня забанят. ЗЫ. Если вы не поняли, я говорил про пипиьску в смысле скилла. Разного рода технические споры удлинняют пинус и кстати умеряют чсв. |
| Автор: ИванМ 7.6.2010, 21:20 |
Имею ввиду нативные библиотеки или привычные для пользователя системы. Типа .NET которая есть уже в новой винде или Java-машина, которую все равно обычно ставят. Добавлено через 57 секунд Имею ввиду нативные библиотеки или привычные для пользователя системы. Типа .NET которая есть уже в новой винде или Java-машина, которую все равно обычно ставят. |
| Автор: djamshud 7.6.2010, 21:27 |
| ИванМ, сейчас еще много на пистоне пишут. Раньше много писали на перле. Не системных библиотек, а софта и просто "больших" скриптов. |
| Автор: ИванМ 7.6.2010, 21:30 |
Можете эту фразу перевести на русский язык? Что то не понимаю ее смысл. Добавлено через 1 минуту и 25 секунд djamshud, по питон наслышан. Многие его хвалят, надо попробовать. Но он же вроде интерпретатор и нужна для него виртуальная машина, которой в системе изначально нет. |
| Автор: boostcoder 7.6.2010, 21:31 | ||||
Добавлено через 1 минуту и 59 секунд
а жаба, не так же? ;) кстати, сишарп, в исполняемый файл компилится? и компилится ли он вооще, или так же, скрипт? |
| Автор: djamshud 7.6.2010, 21:41 |
| ИванМ, расшифровываю. libxml написан на си. И никогда ни на перл, ни на питон переписан не будет. А всяких скриптов автоматизации, мониторинга и прочего - тьма. И даже софт в привычном понимании этого слова (с графическим интерфейсом) есть на перле и питоне. На питоне кстати написан целый меда-центр. Только я его название забыл. Добавлено через 1 минуту и 12 секунд А что касается интерпретации - это не беда для десктопа. Ресурсов - хоть жопой жуй. |
| Автор: ИванМ 7.6.2010, 21:50 | ||
| boostcoder, Java и C# интерпретаторы-компиляторы. Т.н. JIT-компиляция. Для Java нужна тоже виртуальная машина, но поскольку Java-приложения распространены, то это не является недостатком для разработчиков. Для .NET еще лучше потому что в новых виндах она уже в систему зашита. Единственное, что все равно по мере возникновения новых фреймворков нужно будет все равно качать. Но это тоже не недостаток, потому что .NET тоже распространен. А что качается других языков, то может быть такая ситуация, что виртуальная машина у пользователя не будет установлена, что явится причиной недовольства пользователя. Можно конечно в инсталлятор запихнуть, но тоже не очень вариант.
Но нужна виртуальная машина. Еще по поводу вирт. машины. Если приложение большое, целая система, то можно и попросить пользователя установить эту машину, черт с ней. Но когда у вас приложение маленькое, то ради него устанавливать вирт. машину не очень. Легче написать нативное приложение на C++ и пользователь будет доволен. |
| Автор: boostcoder 7.6.2010, 22:02 |
помнится мне, когда-то такое проделывал с пайтоновским кодом. кода было на 4кб, а экзешка получилась на 12мб но и смысла пока не понимаю в жабе и сишарпе. если писать на С++ используя Qt и boost, и опыт работы с этими либами не мал, то все равно скорость разработки на высоте. другое дело, что жаба и пайтон, и остальные им подобные, и скриптовые тоже, требуют куда меньше знаний. так сказать, порог вхождения выше. |
| Автор: ИванМ 7.6.2010, 22:08 | ||
я бы сказал, что не меньше знаний, а меньше трудовых затрат знаний тоже должно быть много для изучение всяких стандартных библиотек и проч. Вообще, у меня такая мысль, что если был бы придуман современный нативный язык, по простоте не уступающий допустим C#, то и c++ бы умер и Java/C#/Pithon и проч. вместе с ним. Но его пока нет. Единственное, что не было бы переносимости на уровне исполняемого кода, а только возможно на уровне исходного кода. Но мне кажется, что это такая проблема, которая придумана Мелкософтом и Sun вместе с ним, чтобы придать своим разработкам вес. На самом деле это бред полный. Переносимость на уровне исходного кода достаточна. |
| Автор: djamshud 7.6.2010, 22:09 |
| ИванМ, наличие или отсутствие интерпретатора совсем не проблема - указывайте его в зависимостях своего пакета и все пучком. Сам скачается и установится (а скорее всего уже давно был установлен). По поводу еврейской компиляции: и перл, и питон, и пхп(!) уже давно компилируются в промежуточный байт-код из которого потом и исполняются. |
| Автор: ИванМ 7.6.2010, 22:09 |
Скорость разработки в C# на мой взгляд выше, чем Qt. |
| Автор: djamshud 7.6.2010, 22:10 |
| >порог вхождения выше. наоборот ниже). Добавлено через 1 минуту и 58 секунд >не было бы переносимости на уровне исполняемого кода Она нафик не нужна. По компилятору под платформу - и в путь. Юниксы то на кофеварки попали и ничего, нормально. |
| Автор: boostcoder 7.6.2010, 22:13 | ||
трудовые затраты, это когда ты уже знаешь ЯП, и что-то уверенно пишешь. а пока ты не очень хорошо знаешь ЯП, то тебе требуются знания.
да вы что?! есть! - http://www.google.ru/search?hl=ru&source=hp&q=google+go правда пока сырой, но уже кодить можно. при том системный, нативный. Добавлено через 1 минуту и 54 секунды если ЯП проще, значит выше. или хз. запутался) |
| Автор: ИванМ 7.6.2010, 22:17 | ||||||
Байт-код и JIT-компиляция разные вещи. При JIT-компиляции байт код преобразуется в машинный код в момент исполнения, и скорость будет выше, чем если напрямую будет виртуальная машина гнать, как в случае с php. Но там по другому никак. И вообще вопрос не об этом.
Пакеты есть не всех линуксах, и в винде такого нет. Добавлено @ 22:21
Знаний конкретно самого языка меньше, но синтаксисом язык не ограничен. Например, изучая C# ты большую времени потратишь на изучение различных стандартных библиотек. Что касается C++, то наоборот, большая часть времени у начинающих разработчиков тратится именно на сам язык. Добавлено @ 22:22 Надо будет взглянуть. Но что-то если честно имя разработчика меня настораживает. Или этот язык только для google-вской ОС? |
| Автор: djamshud 7.6.2010, 22:24 |
| >если ЯП проще, значит выше. Не. Язык проще, школота тупее, порог ниже. >Пакеты есть не всех линуксах, и в винде такого нет. Для тех, кто пользуется линуксами без пакетов не проблема прочитать INSTALL-файл из корня архива с исходниками. А на винду пофик, разговор начался с юниксов и их якобы завязке на си(++). >Байт-код и JIT-компиляция разные вещи. При JIT-компиляции байт код преобразуется в машинный код в момент исполнения, и скорость будет выше, чем если напрямую будет виртуальная машина гнать, как в случае с php. Но там по другому никак. И вообще вопрос не об этом. Ок. Но это не проблема для обычного десктопоного софта. |
| Автор: ИванМ 7.6.2010, 22:30 | ||||
Ок.
Не очень большая забота о пользователе. Хотя с другой стороны, кто пользуется линуксом, по любому не очень о себе заботится. Имею ввиду что лаймеры на линуксе не сидят. К сожалению, это называется эволюция. |
| Автор: boostcoder 7.6.2010, 22:50 |
пока компилятор работает только под линукс. и разработчик говорит, что под остальные ОС портировать не собирается. т.к. язык разрабатывается для гугловского софта, у которого только никсы на кластерах. давайте без холивара. читайте выше, раз уж на то пошло ;) какая-то не правильная эволюция. в обратную сторону. |
| Автор: ИванМ 7.6.2010, 23:01 |
Я против линукса не выступаю. Имел ввиду, что тот, кто сидит на линуксе, что-то понимает в компьютерах. Поэтому к нему возможно можно больше предъявлять требований. А вы посмотрите историю развития нашего общества. Раньше, например, музыку писали и были востребованы только настоящие композиторы с консерваторским образованием. Теперь же музыку пишут все кому не лень. По той причине, что прогресс привел к появлению музыкального софта, в котором может любой разобраться, не говоря уже про телевидение, интернет и проч.. Тоже самое качается программирования. Раньше востребованы были только профессионалы. Теперь же с появлением простых систем программирования программисты соответствующие. Это и есть эволюция. |
| Автор: djamshud 7.6.2010, 23:02 |
| boostcoder, >пока компилятор работает только под линукс. и разработчик говорит, что под остальные ОС портировать не собирается. т.к. язык разрабатывается для гугловского софта, у которого только никсы на кластерах. Наскольок я знаю, компилятор открытый и фактически является плагином к гцц. Так что не думаю, что будет проблема портировать его под винду. Сначала энтузиасты найдутся, потом их поддержит бизнес. ИванМ, >Не очень большая забота о пользователе. Ну так пользователь сам отказывается от благ цивилизованного общества. >кто пользуется линуксом, по любому не очень о себе заботится Кто пользуется линуксом, пользуется пакетами или ебилдами и не морочит себе голову установкой софта:). |
| Автор: boostcoder 7.6.2010, 23:06 | ||
я лишь пересказал мнение разработчика по этому поводу. |
| Автор: bsa 7.6.2010, 23:11 | ||
|
| Автор: ИванМ 7.6.2010, 23:13 |
| bsa, так точно, начальник |
| Автор: boostcoder 7.6.2010, 23:14 |
но мы же мирно. не ругаемся. никого не трогаем |
| Автор: A5uKa 8.6.2010, 09:11 | ||
Я за вариант - с си. |
| Автор: denes 8.6.2010, 12:52 |
| у меня С++ 2008 а книги где взять ? только не надо дурацких ответов !!! |
| Автор: azesmcar 8.6.2010, 13:01 |
тогда не надо дурацких вопросов! книги обычно берут в книжных магазинах, в библиотеках, более продвинутые покупают в интернете, хотя покупают немногие, больше просто скачивают. Если ты не поленишься и посмотришь на форуме, ты найдешь тут такую тему, как http://forum.vingrad.ru/forum/topic-48036/225.html#st_0_view_0, которой для ответа на твой вопрос более чем достаточно. |
| Автор: A5uKa 8.6.2010, 13:21 | ||
навеяло ... Мне один знакомый недавно сказал, что не может писать на C# 2010, так как в отличие от C# 2008, который установился вместе с 2010 "нету комманды StreamWrite" p.s. ( он спрашивал у мен где она ) Вопрос ко всем - где она |
| Автор: Леопольд 8.6.2010, 13:44 |
| azesmcar, говорят же, не надо отвечать на этот вопрос, он риторический. |
| Автор: denes 7.9.2010, 17:28 |
| А там всеровно да и смотря какой проект ! |