Автор
|
Тема: Для начинающих. C/C++ - что выбрать?
|
dvorobjov |
опубликован 11-02-2002 20:46 MSK
В пятницу попал на этот форум. Честно скажу, приглянулся он мне здорово. Удобный, быстрый, но самое главное - живой. Полазил, посмотрел, поискал, почитал, попытался что-то ответить и даже поспорить с кем то. Но все к одному сводится, к тем, кто приличный опыт имеет вопросов у меня нет. А вот новички... Я не про новичков на сайте, я про новичков в мире С/С++ ...Ребята, сочувствую я вам. Вы по поводу и без повода все на плюсах ваяете. А меж тем, в большинстве задач значительная часть кода выглядела б куда проще и лаконичнее, ежели б была на С написана. И исполняемый модуль покороче получится (как правило), и исходник, а самое главное - читабельнее. Это я к тому, что есть такое понятие "золотая середина", не надо в крайности бросаться, т.е. писать либо на сях либо в плюсах. От их совмещения пользы больше. Я тут ни в коей мере обидеть никого не хочу, просто высказываю свою точку зрения, пищу для ума даю. Лично мой принцип таков: если не нужно более одного экземпляра какого-то объекта, то и нечего для него отдельный класс создавать (по крайней мере сразу), а перед использованием библиотеки MFC вообще нужно семь раз объективно все за и против взвесить. И еще одно. Основная ошибка встречающаяся у начинающих - то что человек не поняв механизмов работы ОС сразу лезет в глубь, в сложности. Винды это не дос, тут с таким пробелом в знаниях очень долго можно топтаться на месте, MFC это не libc, с такой библой без знания C++ тяжко. В общем, совет один - не зная в совершенстве С (я не имею в виду библиотеку (библиотечные функции), я имею в виду элементарные вещи, такие как область действия переменных например), не надейтесь что вы быстро и легко освоите C++. Не зная менизмов работы ОС постоянно будете на грабли наступать. Не поленитесь, потратьте недельку на какую нить книгу хорошую (для познания ОС Windows например Рихтер хорош). Потом сотню раз время окупится. Все. Удачи всем.
|
SUnteXx
|
опубликован 12-02-2002 01:48 MSK
2purpe: Топик не трогай, видишь человек только в пятницу пришел! Пущай поживет, он же не знал правил:(2dvorobjob: Согласен, я тоже с C начинал, потом C++, ... 2purpe: Может подымишь вверх топик "Общие сведения конфы" или как там его! Просто много народу прибавилось, интересно будет узнать кто здесь с кем базарит/спорит/консультируются, ... Подыми, а то времени у меня нет искать. Плз! Думаю все будут ЗА!) 2dvorobjob: В этом форуме не принято обсуждать то, что не связано с С/С++. Для этого есть "Основной" форум. Иначе один человек ака purpe убивает топики или, если он будет в хорошем настроении, перекинет сам в "Основной"! Это я так, на будущее!) |
ADK
|
опубликован 12-02-2002 06:13 MSK
Почему же, топик вполне уместен. 2dvorobjov: не вполне с тобой согласен. С++ код, возможно, будет более объёмным в плане числа строк... Однако, сперва узнай, много ли людей создют СОБСТВЕННЫЕ классы? Да, MFC навязывает свою структуру, но обычно дальше применения / расширения классов MFC мало кто идёт. Исключение - когда прямо глаза мозолит, что нужен класс (типа массивов и т.д.). Но ведь классы можно применять гораздо шире, действительно ИНТЕЛЛЕКТУАЛЬНО объединяя данные и методы для работы с чем-либо. Хотя это утверждает любое руководство для начинающих, на практике увидеть, как сделать хороший класс не всегда просто. А если он действительно получится хорошим, то работают основные концепции ООП, повторять их не буду... Ну короче, я согласен с тем, что С++ реально даёт преимущетва, описываемые в учебниках по нему. Любой сложный инструмент требует мастерского подхода. А если ты не умеешь писать нормальные классы, то понятно, что С для тебя лучше. |
the_moon
|
опубликован 12-02-2002 09:46 MSK
Не правы те, кто думает, что Си есть попроще чем Си++ или как бы подмножество Си. Мне больше Си++ нравится. Тут не давно столько проблем было, и только из за того что нет деструкторов, а нерадивые программеры забыли чистить память за собой. Если кто знает очевидное решение динамическому массиву в структуре и как от него потом избавляться на Си, милости прошу. Просто Си++ долшо не был стандатизирован в отличие от Си, потому и программ на Си больше. А так, НУ ЕГО - БОЛОТО! |
dvorobjov
|
опубликован 12-02-2002 11:12 MSK
Спасибо всем, кто откликнулся, ведь, как известно, в споре рождается истина.2the_moon> Не правы те, кто думает, что Си есть попроще чем Си++ или как бы подмножество Си. Здесь два утвержения, и я думаю одно из них верно, а другое нет. Си++ не поддмножество Си, он родился как более поздняя более мощная и развитая спецификация последнего. По-этому _Синтаксис_Си_ проще Си++, а по сути - _это_один_язык_. Не даром же Си++ довольно долгое время называли "Си с классами". Итак, я логически привел вас к утверждению что Си и Си++ это один язык на разных стадиях своей эволюции. Теперь следущая логическая цепочка - Кто из вас пользуется компилятором который не поддерживает Си++? Я думаю - если таковые найдутся, то их будут единицы. Выходит что все мы пишем на Си++, только не все и не всегда пользуются новыми возможностями предоставляемыми Си++. И я думаю что среди этих "не все и не всегда" есть матерые программеры в совершенстве знающие Си++. Вот я и подвел вас к главному вопросу, задайте его себе - А всегда ли _оправдано_ создание какого-то класса, или все же есть резон реализовавать "это" глобальными функциями? 2ADK> А если ты не умеешь писать нормальные классы, то понятно, что С для тебя лучше. А кто умеет писать нормальные классы, те кто MFC писал? |
necer
|
опубликован 12-02-2002 11:44 MSK
>Си++, а по сути - _это_один_язык_. Не даром же Си++ довольно долгое время называли "Си с классами". Большей частью лишь благодаря внешнему сходству в синтаксисе и привычке.>Итак, я логически привел вас к утверждению >что Си и Си++ это один язык на разных >стадиях своей эволюции. Теперь следущая >логическая цепочка - Кто из вас пользуется >компилятором который не поддерживает Си++? >Я думаю - если таковые найдутся, то их >будут единицы. >Выходит что все мы пишем на Си++, только не >все и не всегда пользуются новыми >возможностями предоставляемыми Си++. И я >думаю что среди этих "не все и не всегда" >есть матерые программеры в совершенстве >знающие Си++. Несколько странная логика, имхо. Давно известно, что C и C++ разные языки. Также для того, чтобы изучить C++ с нуля, совершенно необязательно знать C! Более того, знание C при этом никаких особых преимуществ не дает, за исключением всегда полезного опыта программирования. Почитайте хотя бы того же Страуструпа, все станет понятно. >Вот я и подвел вас к главному вопросу, >задайте его себе - А всегда ли _оправдано_ >создание какого-то класса, или все же есть >резон реализовавать "это" глобальными ?>функциями? Создание классов действительно не всегда оправдано, однако C++ - это не одни лишь классы. Вы что, считаете, что программа, написанная без использованием классов автоматически не является C++ программой? |
server_mouse
|
опубликован 12-02-2002 00:59 MSK
2dvorobjov : Я не знаю где и кем ты работаешь, но у нас на фирме разработка любого проекта идёт примерно так:for(;;){ Приходит начальник(Н) (Н) - Так, бросайте вашу работу, есть небольшой проектик. Тут буквально три дня работы... (МЫ) - Тут ещё чуток доделать... (Н) - Потом! Уходит. Мы вламываем как лошади неделю. :) for(int i=0;i<100;i++) { Снова приходит начальник: (Н) - Так, надо в вашу програмулю добавить ещё вот это, это и это... Проходит ещё 3 дня... } В итоге через пол года маленькая програмулька вырастет маленький такой монстер. Ещё чуть-чуть и это будет нормальный законченый продукт.... }//for(;;) В итоге, что я хочу сказать. Если бы я в начале под ту маленькую програмульку выбрал бы C,(нет MFC, нет WTL, нет своих классов) то до конца я бы никогда не дошёл. И зарплату врядли получал бы. C++ тем и хорош, что на нём легко поддерживать и дорабатывать большие и растущие проекты.
|
frostbitten
|
опубликован 12-02-2002 15:08 MSK
2server_mouse: Большие растущие проекты? Напр. ядро (и не только оно) Linux на ц написано.... Главное грамотно зазработать. Другое дело, что я-то с вами согласен :), но мне кажется дело не столько в преимуществе C над С++, а в том, что мы покаление кодером наглухо промытых ОО (Object Orient stuff)... и, при всех равных условиях, проекты на С++ у нас получаться более грамотно структурированными (слово-то какое большое, оказывается :). Я не стану тут приводить эпитеты, кот. мой начальник - инженер действительно заслуженный - одаривал С++, когда его изучал, а были они весьма красочными :)... Структурное Про(ект-/грамм-)ирование дает о себе знать. |
server_mouse
|
опубликован 12-02-2002 15:50 MSK
Если мне не изменяет память, то строчка for(int i=0;i<10;i++)это уже C++. Чего уж тут дальше ходить |
rivitna
|
опубликован 12-02-2002 22:26 MSK
Очередной бредовый топик! Каждый изощряется в риторике!Я тоже пишу на C по многим причинам (не хочу уточнять по каким, чтоб дров в огонь не подбрасывать). Итак, когда мы пили пиво с Flex Ferrum'ом на Дне программиста, пришли к общему мнению: у грамотного программиста есть инструментарий (C, C++, С++ w MFC, Delphi, ASM etc), в зависимости от поставленной задачи он выбирает чем пользоваться, на то он и грамотный программист. А молоток с плоскозубцами сравнить нельзя... Что-то хвалить или хаить глупо и непрофессионально |
ADK
|
опубликован 13-02-2002 06:44 MSK
Согласен с rivitna. И ещё согласен с тем, что на C++ легче поддерживать большие проекты. После 10000 строк это становится заметно. А про ядро Линукс вообще разговор отдельный... В принципе, не хочется и продолжать. Топик тупиковый! 2dvorobjov: я согласен, что на С, конечно, можно сделать то же самое, но с большими усилиями и побольше попарившись (я про большие проекты). Вот и всё! |
SUnteXx
|
опубликован 14-02-2002 02:21 MSK
Топик бред, не в обиду будет сказано!Изучал когда-то С, но уже не помню когда - было давно, + сразу же (через неделю-две) перешел на С++! Разницы не помню (это вам не переход с VB на VC++!). Щаз посмотрел сорсы прог, которые все-таки я написал на С! Мало чем отличаются от Ц++! Собственно, вопрос, ВАМ ЧТО, ЗАПРЕЩАЕТ ПЛЮСЫ ЮЗАТЬ ИЛИ ЗАЧЕМ ЭТА НИКЧЕМНАЯ ДИСКУССИЯ? ЗЫ Нормальные вопросы и фразы формулировать не могу (уже почти сплю) |