Добавлено: Чт, 19 Май, 2011 12:26 Заголовок сообщения: Посоветуйте книгу по C++
Посоветуйте книгу или материалы для обучению програмированию на с++ _________________ Весь мир - театр, а люди в нём - актёры...
Жизнь - это спектакль и важно не то как долго он длиться, а будут ли в конце аплодисменты...
Добавлено: Чт, 19 Май, 2011 14:55 Заголовок сообщения:
Посоветую не учить C++. Серьезно. Есть множество языков, которые действительно стоит изучать, в отличие от C++. Вот почитай, к примеру: http://steps3d.narod.ru/tutorials/c-minus-minus.html
Если же всё таки нужно —
«Основы программирования на С++. Том 1», Стенли Липпман
Язык программирования C++. Вводный курс", Стенли Липпман, Жози Лажойе
Потом желательно еще почитать Страуструпа, всё-таки автор языка
И напоследок очень полезно «Современное проектирование на С++» Андрея Александреску
Зарегистрирован: 18.02.2007 Сообщения: 482 Откуда: Город ветров
Добавлено: Чт, 19 Май, 2011 15:38 Заголовок сообщения:
Наверное полностью соглашусь с adm0r'ом. лучше уж просто С. без извращений вида наследование полиморфизм и пр... объектного мусора. В последнее время часто сталкиваюсь с бредом вида городить классы с объектами там, где надо набрать пару строк. _________________ как же надоел этот беззвучный вой... стон от которого замирает сердце и плачет душа
Добавлено: Чт, 19 Май, 2011 16:08 Заголовок сообщения:
Ну, последнее уже привычно для многих языков с объектно-ориентированной парадигмой. Городить фреймворк для простейших операций. Если кто не читал — интересная статья по теме: http://habrahabr.ru/blogs/java/112969/
Добавлено: Чт, 19 Май, 2011 17:22 Заголовок сообщения:
adm0r, domov0y
При всем уважении, вы говорите ерунду.
Человеку, который собирается работать в индустрии ПО, однозначно нужно знать и С, и С++. Это своего рода стандарт. Даже если писать на нем не придется, это даст более глубокое понимание многих аспектов (управление памятью, адресная арифметика, определенные особенности ООП, устройство разнообразых api, ориентированных на С/С++).
А уж уверенного знания ООП:
domov0y писал(а):
без извращений вида наследование полиморфизм и пр
на ниве современного программирования работать не получится. Оно не просто так стало доминирующим подходом к разработке ПО.
Что же до книг, я бы советовал что-то вроде
Герберт Шилдт "Полный справочник по C++"
Для ознакомления с синтаксисом этого хватит. Дальше есть смысл смотреть по задачам.
Из того, что пригодится большинству, могу посоветовать
Скотт Мейерс "Эффективное использование STL"
Упомянутая выше «Современное проектирование на С++» Андрея Александреску - действительно очень интересная книга, но практическая применимость всего, что там написано, 0 целых и 0 десятых. Но идиомы там действительно очень интересные.
Ну и, если возникнут вопросы касательно программирования и С++ в частности, можно задавать их тут
Добавлено: Чт, 19 Май, 2011 17:42 Заголовок сообщения:
Ну, я работаю в индустрии ПО сдельным программистом. И что? Знать С++ ради «определенных особенностей ООП»⁈ Да более отвратительное ООП я видел только в Turbo Pascal 5.5. Ради ООП стоит изучать, допустим, Ruby с его парадигмой — «всё это объект». Ради «управления памятью и адресной арифметики»? Простите покорно, но Танненбаум с его «Архитектурой компьютера» даст много больше чем изучение корявой поделки.
Windows тоже своего рода стандарт. Только поставить его меня никто не заставит.
И не советую замыкаться на ООП. Существуют и другие парадигмы программирования — в частности, набирающая обороты функциональная.
Добавлено: Чт, 19 Май, 2011 17:59 Заголовок сообщения:
adm0r писал(а):
Ну, я работаю в индустрии ПО сдельным программистом. И что?
И, судя по списку рекомендованных книг, знаете С++
Не все в С++ хорошо - это факт. Но почему-то именно его синтаксис лег в основу широкой массы других языков (C#, Java, JS, php и т. п.). И знать С++ стоит уже хотя бы затем, чтобы понимать, почему в разработке последующих языков что-то сделано по другому.
Ну а Танненбаум - это, конечно, хорошо, но практике грамотного управления памяти, поиску утечек, мертвых ссылок и т. п. он не научит. Зато опыт разработки на С/С++ - вполне.
adm0r писал(а):
Существуют и другие парадигмы программирования — в частности, набирающая обороты функциональная.
У которых есть своя ниша, которая с С++ ни разу не перекрывается.
adm0r писал(а):
Windows тоже своего рода стандарт. Только поставить его меня никто не заставит.
Вообще-то средства должны подбираться под задачи, а не задачи под средства. Я не являюсь поклонником творений Microsoft, но не вижу в них ничего ужасного. В прямых руках и там все работает как надо.
Добавлено: Чт, 19 Май, 2011 18:14 Заголовок сообщения:
reiten писал(а):
И, судя по списку рекомендованных книг, знаете С++
С++ изучал в университете. Поэтому — да, знаю. Пользы от этого, правда, не вижу.
reiten писал(а):
Но почему-то именно его синтаксис лег в основу широкой массы других языков (C#, Java, JS, php и т. п.).
В основу других языков лег синтаксис не C++. Это синтаксис C - прекрасного языка.
reiten писал(а):
Ну а Танненбаум - это, конечно, хорошо, но практике грамотного управления памяти, поиску утечек, мертвых ссылок и т. п. он не научит. Зато опыт разработки на С/С++ - вполне.
Ручное управление памятью и поиск утечек? Простите, а зачем тренировать этот скилл, если потом не программировать с его применением? Ведь стоит начать программировать на другом языке, и скилл оказывается невостребованным.
reiten писал(а):
И знать С++ стоит уже хотя бы затем, чтобы понимать, почему в разработке последующих языков что-то сделано по другому.
Знать С++ ради того, чтобы понимать, почему другие языки лучше? Вообще хорошее предложение.
С++ еще жив, и жив будет долго. Геймдев со временем переключится на другие языки, но это будет не быстро. Но в большинстве задач C++ уже не нужен: есть С, есть Managed среды, есть скриптовые языки…
И, правильно, средства под задачу — веб движок на руби, десктопное приложение на Vala/Mono, маленькие утилиты — Python/Ruby
p.s. http://habrahabr.ru/blogs/cpp/111403/
p.p.s. Мм-да. А темка-то холиварная получилась. Ладно — мое мнение понятно, список литературы я привел, засим из дискуссии самоустраняюсь.
Добавлено: Чт, 19 Май, 2011 18:41 Заголовок сообщения:
adm0r писал(а):
Ручное управление памятью и поиск утечек? Простите, а зачем тренировать этот скилл, если потом не программировать с его применением? Ведь стоит начать программировать на другом языке, и скилл оказывается невостребованным.
Затем, что память - не единственный ресурс, подверженный утечкам. Не говоря уже о том, что при определенном "таланте" утечку памяти можно создать и в языке со сборкой мусора.
Добавлено: Чт, 19 Май, 2011 18:44 Заголовок сообщения:
reiten, вам не кажется, что если у человека «талант» к созданию утечек, то ему категорически запрещено программировать на С++? С++ — язык не терпящий быдлокода, и средств отстрелить себе ногу в нём просто поразительное количество.
Последний раз редактировалось: adm0r (Чт, 19 Май, 2011 19:03), всего редактировалось 1 раз
Добавлено: Чт, 19 Май, 2011 18:51 Заголовок сообщения:
Вот потому таким людям и надо пройти через программирование на С++ - они научатся делать как надо, или умрут от потери крови
Именно из-за нулевой толерантности к ошибкам я считаю С++ хорошим полигоном для обучения перед тем, как переходить на managed-языки.
Добавлено: Чт, 19 Май, 2011 19:02 Заголовок сообщения:
А я бы советовал изучать математику, алгоритмы, читать Кнута, Танненбаума,Фаулера, научиться разбираться в работе компьютера на всех уровнях, смотреть best practices для того языка, который и будет использоваться в «бою». Ведь, благо, для этого будет достаточно времени, если не тратить его на С++
Добавлено: Чт, 19 Май, 2011 19:08 Заголовок сообщения:
Так одно другого не отменяет. А кроме алгоритмов есть еще сети, параллельное программирование, базы данных, проектирование и много других важных вещей.
А вот на один конкретный язык с самого начала завязываться неразумно. При достаточном опыте и понимании основ, очередной язык изучается за пару дней.
Добавлено: Чт, 19 Май, 2011 19:10 Заголовок сообщения:
Тем более. К чему тогда привязываться к С++, если видеть все его недостатки? Может стоит изучать ОСНОВЫ, а не С++, и паралельно программировать на более «цельных» языках, а при необходимости изучить С++ за пару дней?
Добавлено: Чт, 19 Май, 2011 19:24 Заголовок сообщения:
Затем, что если начинать с Java/C#/python/php и т. п., то целые пласты программирования окажутся вне поля зрения. Для человека, который никогда не задумывался о том, как хранятся строки, их реализация, к примеру, в С будет темным лесом. Вот чтобы не создавать пробелов в образовании, и стоит начитать с С или С++. Как вариант - с pascal, но это де факто мертвый язык. Ну а если ставить вопрос как С или С++, то ИМХО надо учить и то, и другое.
Добавлено: Чт, 19 Май, 2011 19:25 Заголовок сообщения:
В статье прочитал, что язык С++ "широко" используется, т.е. для множества различных целей... А вы его что то недолюбливаете =) Тогда с какого языка лучше начать учить програмирование (сам пробовал программировать только в паскале и бэйсике и то только простейшее)? _________________ Весь мир - театр, а люди в нём - актёры...
Жизнь - это спектакль и важно не то как долго он длиться, а будут ли в конце аплодисменты...
Добавлено: Чт, 19 Май, 2011 19:35 Заголовок сообщения:
Статья, скажем так, не совсем объективна
Начинать стоит все же с С/С++/pascal. Первые акценты - алгоритмы и структуры данных, процедурное программирование (понимание необходимости инкапсуляции, повторного использования кода и т. п.). А уже когда есть основа, можно переходить к ООП, изучению какого-нибудь фреймворка (создание пользовательских интерфесов, многопоточность, работа с сетью, работа с базами данных и т. п.). На этом этапе уже может быть смысл переходить на managed-язык (хотя роли это особо не играет)
Добавлено: Чт, 19 Май, 2011 19:37 Заголовок сообщения:
С — согласен. Язык хорош. И стоит изучения. А С++ лучше заменить на Objective-C, если уж так хочется не удаляться от С.
Я бы современное изучение языков строил от простого к сложному: сначала интерпретируемый язык(Ruby) — скорость разработки, и изучение подходов и алгоритмов. Потом С: понять на низком уровне, что и как происходит. А потом что-то из managed сред: Java, C#, Vala. А уже потом что-то для поднятия квалификации и расширения кругозора:Haskell, Ocaml, и(обязательно) Lisp.
В результате на любую задачу у тебя будет набор инструментов: скорость — С, Haskell, Lisp, Vala. Скоростное прототипирование — Ruby(+ самописные модули на С — штука зверская). Скоростная удобная разработка с GUI — Java, C#, Vala. Сложные алгоритмы, обработка данных — Haskell
Офтоп (Не хочется городить кучу тем.)
Вопрос на засыпку: кто нибудь может подсказать ссылку на приличный материал относительно доступно (читай для чайника только слезшего с интегрированной среды разработки и программы hello world) рассказывающий как происходит компиляция и линковка приложений написанных на с? А еще на опции компилятора (gcc). И таблеток от жадности. Да побольше побольше.
А то править чужое-легко. Но понимания процесса как то не хватает. _________________ как же надоел этот беззвучный вой... стон от которого замирает сердце и плачет душа
Ivor Horton Apress.Beginning.C.From.Novice.to.Professional.4th.Edition.Oct.2006
Francis Glassborow You Can Program In C++ - A Programmer's Introduction
Francis Glassborow You Can Do It! - A Beginner's Introduction to Computer Programming
После фамилии автора - название файла (pdf), как я скачивал. Что-то с торрентов, что-то напрямую.
В виде файла справки: A Complete Guide to Programming in C++ by Ulla Kirch-Prinz and Peter Prinz
И еще
Bruce Eckel - Thinking in C++ и Thinking in Java, у него даже сайт есть, где он ранние издания нахаляву раздает.
Ну и сам Stroustrup всюду валяется - и русский, и английский. Ну и там adm0r еще кучу давал.
domov0y
У Гласборо и Экеля что-то про принципы линковки было (особенно у Экеля), но кокретный процесс - это надо наверное мануал от gcc ковырять. Моя пас.
Если что кого заинтересовало, а поиск результатов не дает, могу попробовать намылить. Но это по 5, а то и по 10М каждая книга. _________________ Все будет так, как должно быть, даже если будет иначе
Я просто решил выяснить что такое микроконтролер и чем его закусывают. Сел править файлы прошивки программатора и уткнулся в 'лишние модули' без которых оно прекрасно собралось ни на байт не поменяв размер. Вот меня и заинтересовала теория как это происходит. Особенно в условиях недостатка памяти актуально _________________ как же надоел этот беззвучный вой... стон от которого замирает сердце и плачет душа
AVR attiny2313 и atmega16. программатор до которого добрался AVR-Doper. так и не понял зачем там компиляция куска utils.с _________________ как же надоел этот беззвучный вой... стон от которого замирает сердце и плачет душа
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы