Привет
Скажите что луче почитать для начинающих программеров с/с++ под lin
Спасибо
пишите пожалуйста по-русски.
Настоятельно просим вас при общении соблюдать Правила форума и законы РФ. Наша тематика вне политики, поэтому воздержитесь от обсуждения ситуации на Украине и связанных с ней событий, независимо от того, какую сторону вы поддерживаете.
Также напоминаем, что наш форум находится в доменной зоне .ru, физически расположен на российских серверах и мы соблюдаем действующее законодательство России. Любые сообщения о политике будут удаляться.
Linux Forum → Программирование → Скажите что лучше почитать для начинающих (С, С++)
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Привет
Скажите что луче почитать для начинающих программеров с/с++ под lin
Спасибо
пишите пожалуйста по-русски.
K&R
K&R
oO
а если совсем начинающий.. wink
Привет
Скажите что луче почитать для начинающих программеров с/с++ под lin
Спасибопишите пожалуйста по-русски.
Рекомендую начать с Lazarus. Аргументы - освоите не один ЯП, научитесь не делать "детских ошибок"(паскаль этому быстро учит), ну, и наконец, первая программа за секунды! Потом на Qt Creator.
со всего что получилось это где-то на этом форуме нашол как вывести на екран hello )
я пытаюсь писать по русски, извинитие
со всего что получилось это где-то на этом форуме нашол как вывести на екран hello
это уже немало.
вот посмотрите: http://ru.wikipedia.org/wiki/Язык_прогр … Си_(книга)
прямую ссылку не даю, т.к. сомневаюсь в легальности, но с помощью гугла легко находится русский перевод.
ну, и наконец, первая программа за секунды! Потом на Qt Creator.
смысл изучать паскаль, а потом С? Не проще-ли сразу заняться С?
Присоединяюсь к хору мартовских котов.
Читайте классику: Керниган & Ритчи. Это по Си.
Что касаемо Си++, то я Вам пока бы не советовал его даже смотреть. И вот почему.
Дело в том, что Си -- это как бы подмножество С++. Поясняю. Си++ допускает написание программ в стиле Си. А если Вы начнете сразу и то, и другое грызть, они у Вас просто смешаются в голове. Сначала поиграйтесь немного с Си. А если у Вас действительно есть такая необходимость -- работать с объектами, использовать ООП, то не забуряясь в специфику Си, сразу же начинайте с базовых понятий ООП в контексте Си++. Иначе будет как у всех. Используем Си++ компилятор, а текст программ пишем в стиле Си.
По Си++ лучше всего, опять же, -- классика: Бьянр Страуструп.
Сейчас книжек полно по языкам программирования. Можно Шильдта прикупить.
Еще один важный момент. Сам по себе язык Си очень компактный. Там всего десятка два операторов (ну или около того. Поправьте, кто знает!). Правил языка очень не много. В языке даже операторов ввода-вывода нет! Т.е. язык предоставляет собой жесткую арматуру. За что его любят, уважают и очень широко используют. Вся необходимая функциональность достраивается великим множеством библиотек. И одна из проблем людей, которые начали изучать Си, состоит в том, что они еще не способны отделить конструкции языка от элементов (функций) библиотек.
На состав библиотек в свою очередь влияет среда. А еще более точно -- операционная система. Но есть стандартные библиотеки, например, -- стандартная библиотека ввода-вывода. Она что для ДОС, что для ВыньДОС, что для Линуха -- одна и та же. Ну, конечно, немного разная. Но на 99% это одни и те же функции, один и тот же подход. Библиотеки консольного ввода вывода для ДОС и для Линуха -- разные. Для Венды -- вообще отсутствует!
Т.е. я к чему это все говорю, если Вам нужно прокачать язык, то берите книку-классику. Не ошибетесь -- точно! Если Вас тянет писать Си-шные проги под Линух, то книжка авторов Нейл Мэтью и Ричардс Стоунс "Основы программирования в Linux" (красная такая, толстая) -- самое то!
И, наверно еще одно. Идите в книжный магазин и просто полистайте книжки. Купите ту, которую Вы почти понимаете. Не проще и не сложнее. Остальные знания насобираете на форумах и на сайтах. Опыт поиска нужной информации, опыт работы с компиляторами, опыт написания программ, опыт поиска ошибок и отлаживания -- все это придет со временем. Вам нужно тупо "налетать 400 часов и совершить две сотни взлетов и посадок".
Удачи!
drBatty пишет:K&R
oO
а если совсем начинающий.. wink
C++ для чайников.
По С - К&R,
по С++ - тут сложнее, поскольку все переводы безобразны,
а в итоге - моему деточке в "школе" велели читать Страуструпа,
и смотрел он на него где-то месяца два со злобой и тоской.
Наконец приехало
Bjarne Stroustrup
Programming Principles and Practice Using C++.
2009
...и всё пошло на лад.
Так что насчёт "на-русском" - это только себе жизнь усложнять, имхо, естессна :rolleyes:
могу посоветовать Объектно-ориентированное программирование в C++ - Р. Лафоре ... просто и достаточно понятно... от Страуструпа вас я думаю прибьет если вооще не знакомы с с++
[offtop] и пожалуйста не беритесь за Qt пока хоть немного не разберетесь с с++ [/offtop]
drBatty,
Не в курсах, о чем. Я бы вновь родившимся программерам посоветовал (если под линуксом) писать на QML
Уважаемые форумчане, просьба писать по теме, и воздержаться от споров и прочего. Тема у нас что лучше почитать для начинающих (С, С++).
PS: некоторые сообщения не имеющие отношения к теме были удалены. Холивар можно начать в другой теме. Только пожалуйста без перехода на личности.
С уважением, модератор.
могу посоветовать Объектно-ориентированное программирование в C++ - Р. Лафоре ... просто и достаточно понятно... от Страуструпа вас я думаю прибьет если вооще не знакомы с с++
[offtop] и пожалуйста не беритесь за Qt пока хоть немного не разберетесь с с++ [/offtop]
согласен абсолютно! только так и только в такой последовательности
очень хорошую книгу видел
Х. М. Дейтел, П. Дж. Дейтел IV издание 2009
"Как программировать на С"
в данной книге есть введение в C++
советую начать с неё
Господа программеры! Все зависит от задачи. Иногда и питон рулит
Я начинал с книги Кернигана и Пайка
Спасибо всем
Думаю для начала достаточно
Разрешите продолжить тему, чтобы не плодить топики. Я заканчиваю читать книгу Дейтела и Дейтела "Как программировать на С". И, естественно, задумался что читать дальше. Хочу писать программы под Linux для собственных нужд, а со временем может и поучаствовать в разработке более серьёзного ПО. Хотелось бы получить совет на чём сконцентрироваться С или С++, какую литературу почитать в связи с этим.
для собственных нужд вше крыши хватит С.
С++ нужен для больших проектов. Для проектов, над которыми трудится не один человек.
В маленьких проектах, вы используете очень небольшое количество каких-то ваших сущностей (ну, объектов того физического мира, которые вы обрабатываете), поэтому вы не церемонитесь с этими сущностями и ставите им в эквивалент стандартные типы языка С -- целые, числа, числа с плавающей точкой, ну и т.д. Когда сущности очень сильно связаны друг с другом, например, имя и фамилия, то вы можете их объединять в агрегатные модули, которые в языке С называются -- структуры. Ну и далее вы работаете с этими структурами, как неделимыми сущностями. Хотя, если потребуется, вы можете из структур достать составляющие их элементы. В общем, используя С вы в основном опираетесь на те типы данных и используете те операции с данными, которые вам предоставляет язык. Когда вам будет не хватать встроенных в язык типов данных и вы захотите расширить (добавить свои) типы, вы прибегаете к структурам. Когда же вам станет не хватать операций с данными, а с вашими типами данных -- вообще нет встроенных в язык операций (и в самом деле! Ну откуда языку знать, какие операции допустимы с вашими типами данных?), -- вы будете использовать свои функции. Ну допустим, вам нужно из структуры, в которой имеются три поля -- фамилия, имя, отчество, -- сформировать упрощенное представление -- "фио", т.е. фамилия + инициалы, написанные через точку. Понятно, что встроенной в язык такой функциональности нет. Вы будете писать свою функцию.
Я еще раз повторю, для небольших проектов можно пойти этим путем. И языка С будет вполне достаточно.
Когда проект будет настолько огромен, что его целостность (понимание) будет очень сложно удержать в мозгу, на помощь приходят "классы". Классы -- это конек С++. В некоторой степени класс похож на структуру -- в нем тоже содержатся составляющие его переменные. Но класс намного больше чем структура. Не по объему памяти, а вообще -- по сложности, по своим возможностям, по всему! Например, в классе находятся функции. Эти функции принадлежат только этому классу и никому более. К слову сказать, что функции и переменные -- это члены класса. Причем функции правильнее называть не функциями, а методами. Но это уже теория, которую вы почитает в книжках.
Так вот, чем хороши классы. Классы -- это только тип. Это не переменная. Эквивалентом класса можно назвать тип "целого числа". А вот конкретная реализация класса -- это уже переменная. Эквивалент для облегчения понимания -- переменная А типа "целого". Переменная myFIO класса FIO_voobshe. FIO_voobshe -- это только тип. Тип знает как работать со своими данными (это прописывается в методах), но не имеет конкретного значения и не размещается в памяти переменных. Это как int -- да, мы знаем, что есть такой тип. Ну и что? В нашей программе мы не используем ни одной переменной этого типа. Но он существует в природе. И когда нам понадобится, мы создадим переменную этого типа, дадим ей имя и будем как-то использовать. Набор операций встроен в язык. Если потребуется что-то большее, нам придется писать свои функции.
Классы -- это типы, которые мы сами изобретаем. Мы наделяем их переменными (членами), которые они могут хранить, и способностями (методами), которые делают те операции, которые нам нужны. Классы -- это наше все! А потом, когда нам понадобится, на основе нашего класса мы создадим переменную, дадим ей имя, и будем ее как-то использовать.
Понимаете суть? Так вот, когда ваша программа (точнее -- проект) разрастается на столько, что у вас уже мозгов нехватает чтобы все тонкости держать в голове, вы будете вынуждены уходить вверх, выше на еще один уровень абстракции. Вы изобретает свои типы, наделяете их способностью что-то хранить, наделяете способностью это сто-то как-то обрабатывать. Вы содаете свою так сказать расширенную вселенную со своими тварями. Когда ваши твари станут жизнеспособны, вы можете забыть о их точной (детальной реализации). Вам нужно будет только знать, что в вашей вселенной существуют люди, зайце-кролики и кто-то там еще. Теперь вы на этом уровне абстракции пишите функциональность -- т.е. описываете то, что должна делать ваша прога. Вы сосредотачиваетесь на бизнес-логике не вдаваясь в детали как устроены ваши "кирпичики" (классы).
Вот, а теперь, когда вы немножко увидели разность задач, на которые рассчитаны С и С++, вы можете сделать вывод, что вам интереснее. Самое забавное, что С и С++ очень сильно перекрывают друг друга. На С в принципе можно писать и большие сложные программы, но это уже будет несколько мучительнее, чем если бы вы писали их на С++. И наоборот, на С++ можно стругать и небольшие задачки. Но это уже будет как "из пушки по воробьям".
Я прошу, людей, которые, пишут на С и на С++ не начинать разговор с исключений. Пусть я немного где-то и соврал, но если мы начнем с изучения исключений, то потеряем логику и ничего не поймем. Исключения и и ваши противоречия понадобятся тогда, когда будет понята основная мысль. Но если сразу вывалить свое несогласие, то все опять свалится в всеобщий срач и будет походить на очередное партсобрание ворон на помойке. Если вам есть что возразить, пишите в ЛС.
Спасибо, что прочитали.
Спасибо, zhevak, за подробный, развернутый ответ. Теперь я лучше понял различия си и си++. Что посоветуете почитать по си++, учитывая то что я уже прочел?
То, что уже было посоветовали выше.
Мне практически нечего добавить. Основное уже подметили, а дальнейшее уже будет выглядеть как просто перечислением обычной литературы по С++.
И помните, что практика не заменит ни какие книжки! Садитесь за клаву и начинайте экспериментировать с тестом программ, приведенных в книжках. Больше смелых экспериментов и вы научитись многому. Вам сейчас нужно понять что, деревянные кубики можно складывать друг на друга, что башенки могут иметь какую-то высоту, после чего становится сложно их строить, что при падении кубики больно стукают по ногам, что при падении они могут сломаться. и т.д. Когда почувствуете силу понимания, сами, без лишней подсказки из вне, начнете творить свои проги.
Желаю Вам успехов на осознанно выбранном пути! Дорогу осилит идущий.
Огромная благодарность, zhevak, за удиленное время, полноту суждений и доброту. Пойду окунусь в код =)
Иногда и питон рулит
иногда рулит и sed
С++ нужен для больших проектов. Для проектов, над которыми трудится не один человек.
категорически НЕ согласен!
сейчас пилю AI именно на C++. потому-что средств C не хватает. Это очень маленький проект, всего один разработчик (я), и тем не менее.
Кстати, пока это закрытый проект.
лучше начинать с C++. ибо почти все функции винды и ВСЕ функции линукса написаны на С/С++
-- Мужик, не томи! Чёт-ты там делаешь? (с) анекдот
сейчас пилю AI именно на C++. потому-что средств C не хватает. Это очень маленький проект.
Хм... интересно. Не сам проект интересен, а интересно _что_ в маленьком проекте оказалось сложно реализовать средствами С, и пришлось применять С++.
Я знаю, что в жизни иногда "случаются" проекты, где определенные вещи красивее (прозрачнее, понятнее, легче) реализуются на С++, чем на С.
Прошу Вас поделиться проблемами.
а интересно _что_ в маленьком проекте оказалось сложно реализовать средствами С, и пришлось применять С++.
ну например массив указателей на функции выглядит в С уродливо. switch/case на пол-страницы == вообще убожество. Виртуальные таблицы - отличная идея
Но в C нет виртуальных таблиц.
Я знаю, что в жизни иногда "случаются" проекты, где определенные вещи красивее (прозрачнее, понятнее, легче) реализуются на С++, чем на С.
я склоняюсь к тому, что на С++ ВСЁ красивее. Вот только для этого нужно иметь опыта хотя-бы лет 5...
Вот честно, не знаю, с чего лучше начинать, за то точно знаю, что начинающий кодер и С++, это обезьяна с гранатой. В прямом смысле 
Вот честно, не знаю, с чего лучше начинать, за то точно знаю, что начинающий кодер и С++, это обезьяна с гранатой. В прямом смысле
Эт-точно!
Исходники моих первых программ на С++, это что-то! Это мега-шедеврально! Просто энциклопедия юмора и примеров "как не надо делать". Там править вообще нечего. Там _всё_ не правильно. Гы-гы!
ну например массив указателей на функции выглядит в С уродливо. switch/case на пол-страницы == вообще убожество. Виртуальные таблицы - отличная идея
и понятно, и не понятно.
У Вас там что -- очень много подобных друг другу сущностей? Т.е. объявляете какой-то родительский класс и начинаете плодить "детей". А на основе детей (типов) создаете конкретные экземпляры объекты? И Вам нужно создавать сущности динамически? Если это так, то ведь это нифига не простенький проект. А если проект простой проект и нет необходимости динамического создания объектов, то кто мешает реализовать функциональность класса в отдельной паре (*.с/*.h) файлов? Хотя... оценка размера проекта (большой-маленький) -- это субъективная оценка. Да и какие вопросы к автору проекта могут быть у меня -- непосвященного чела -- в сторону рассмотрения возможности реализации этого проекта на С? (Ого, как сказал!) Чушь какая! В общем, наверно дальше не имеет смысла обсуждать.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Linux Forum → Программирование → Скажите что лучше почитать для начинающих (С, С++)
Форум работает на PunBB, при поддержке Informer Technologies, Inc