31

zhevak пишет:

У Вас там что -- очень много подобных друг другу сущностей?

да не сказать что очень уж много. Вот простой практический пример - 23дерево.
http://www.cosc.canterbury.ac.nz/tad.ta … tree23.gif
Кажется всё просто:

Имеем объекты двух типов - с двумя потомками, и с тремя потомками.

Когда нужно вставить новый листик, то узел с двумя потомками превращается в узел с тремя. А если это уже узел с тремя, то он расщепляется на 2 узла с двумя. Вот и всё.

Объекты всего 2х типов, и кажется логичным записать тип в объект, и всё. Но! Сколько хранить данных в объекте? Если потомков 3, до данных 2, а если потомков 2, то всего 1 данное. Если мы будем всё делать как объекты с 3я потомками, мы потеряем немерено памяти! Но если будем хранить как разные узлы, то это приведёт нас к "типам" void*, и зачем нам это "высокоуровневый" С?! Чем он лучше ассемблера, где нет никаких типов данных?

Логично реализовать это на С++, тогда каждый узел будет знать, КАК вставлять листы. Причём никаких проверок типа - не нужно. Мы просто запускаем функцию вставки в узел, а уж узел лучше знает, как ему "вставляться". Проблема типов тоже решена - делаем тип "просто узел", и от него наследуем типы "узел с двумя потомками", и "узел с тремя". Сами узлы могут с лёгкостью удалять себя, что-бы создавать новые, достаточно им передать указатель на то место, к которому они подвешены.

Можно сказать: "зачем тебе эти деревья, когда они УЖЕ реализованы?" Всё просто - они НЕ ТАК реализованы, и если мне нужно хранить структуры из миллионов узлов, то мне тупо не хватает памяти и быстродействия.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

32

zhevak пишет:

для собственных нужд вше крыши хватит С.
С++ нужен для больших проектов. Для проектов, над которыми трудится не один человек.

А как же одна наша крупная процессинговая компания (название умышленно не называю) принципиально все пишет на С  считая,  что та проще разобраться при увольнении ведущего программера? А некая компания Эстонско/Финская  пишет пользовательский интерфейс на питоне, поскольку по их мнению отлаживать проще

33

Hvzh пишет:

А как же одна наша крупная процессинговая компания (название умышленно не называю) принципиально все пишет на С  считая,  что та проще разобраться при увольнении ведущего программера?

ессно! я уже писал: x = y + z; в С означает сложение y и z и запись результата в x. В С++ это может означать ВСЁ ЧТО УГОДНО. К примеру депортацию z китайцев в страну y, с последующим уничтожением страны y оружием типа x.

Hvzh пишет:

А некая компания Эстонско/Финская  пишет пользовательский интерфейс на питоне, поскольку по их мнению отлаживать проще

разве не так?
1) компиляция не нужна (лишнее время в разработке/отладке)
2) код == исходник (баги не могут появится ВНЕЗАПНО, во время компиляции - i=i+++++i; в пайтоне не работает. Точнее - работает как ожидается. В отличие от С/С++, где это работает хрен знает как)

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

34

Hvzh пишет:
zhevak пишет:

для собственных нужд выше крыши хватит С.
С++ нужен для больших проектов. Для проектов, над которыми трудится не один человек.

А как же одна наша крупная процессинговая компания (название умышленно не называю) принципиально все пишет на С  считая,  что та проще разобраться при увольнении ведущего программера? А некая компания Эстонско/Финская  пишет пользовательский интерфейс на питоне, поскольку по их мнению отлаживать проще

Это что, типа попридираться к лектору? Загнать его в угол букетом исключений из правил? Доказать обратное? Поспорить, о чем угодно, и доказать всем свою силу? Или так себе, потрындеть?

Уважаемый, жизнь на столько сложна, что в ней полным полно всяких исключений из правил. Но если одна какая-то контора пишет на С, а старый волк-одиночка грызет свой проект на С++, то что? Разве из этого следует утверждение, что я что-то сказал не правильно? Разве из этого следует утверждение, что С++ предназначен для маленьких проектиков, а С для корпоративных мега-проектов?

Я бы Вам порекомендовал почитать больше по истории создания С++. Изучить или хотя бы разобраться в предпосылках возникновения С++. Для чего понадобилось изобретать еще один С-подобный язык? Какие задачи можно было решать на С? Что мешало решать другие задачи? И какие вообще были эти задачи, что на С было их реализовывать крайне тяжко. Но я понимаю, что это будет звучать с моей стороны крайне неучтиво, поэтому я Вам так не скажу. ab

Live Free or Die

35

zhevak,
К Вашему сведению, я С++ преподавал в своем институте еще в конце 80-х - начале 90-х. Так что, историю его возникновения худо-бедно знаю

36

а-а, ну тогда -- извините.

Тогда впрягайтесь по полной и помогайте нам, отвечайте на вопросы более подробно. За что Вам будет огромное спасибо.
А то как-то не спортивно для экс-препода давать короткие критические замечания.
(Вякать из кустиков безопасно, но презираемо. Выходите на дорогу, будем по-взрослому собачиться ab Шучу.)

Итак, уважаемый, как бы Вы сам ответили на свой вопрос? Думаю, желающих послушать будет много. А я хоть поучусь немного у знающих товарищей ab Тоже полезно.

Live Free or Die

37

zhevak,
Учиться - всегда пригодится

38

Тема ушла от топика. Я в своём городишке никак не могу найти что-нить из классики по С++. Если заказывать, то нужно знать конкретно что. Посоветуйте.

39

flyshoot пишет:

Тема ушла от топика. Я в своём городишке никак не могу найти что-нить из классики по С++. Если заказывать, то нужно знать конкретно что. Посоветуйте.

http://www.ozon2.ru/details/5600302 Язык С++ Must Have!!!!
http://www.ozon2.ru/details/2480925 Язык C. Must Have!!!

http://www.ozon2.ru/details/3693961 читал. Вроде хорошая книга. 421р ЕМНИП нормальная цена.
http://www.ozon2.ru/details/5531965 нужная книга. она не совсем даже про С++, но без неё я буду смотреть на вас как на УГ  ae
http://www.ozon2.ru/details/2260656 тоже нужная книга. полезна на практике.
Те, кто пишет на C++ более 3х лет могут почитать Джефф Элджер "C++ ++" полезная книжка, но для достаточно подготовленного читателя.


http://www.ozon2.ru/details/91289 отстой. не стоит и 140р.
http://www.ozon2.ru/details/1917657 просто помойка.


лично я делаю как: выбираю книжку здесь: http://www.ozon2.ru/u/tag/C/C%2B%2B.%20 … %B8%2B%2B/

+ открыть спойлер

потом читаю её в электронном виде

И если книжка хороша, то покупаю.

PS: вот есть ещё эта книга: http://www.ozon2.ru/details/3424738 (это первый том, там ещё 4). Она не про С++, но если вы её не прочитаете, лично я с вами буду говорить как с ребёнком.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

40

Премного благодарен за столь обширный список, даже появился вопрос - в какой последовательности порекомендуете читать?
P.S. На всякий случай повторюсь, я уже осилил Дейтел и Дейтел "Как программировать на С" (там с введением в С++)

41

flyshoot пишет:

в какой последовательности порекомендуете читать?

вот этого я и не знаю. С методологической т.з., лучше С вообще не знать, и сразу начинать думать на ООП. Но все делают с точностью наоборот. Потому ИМХО лучше начать с простой (раз она у вас не первая) книги K&R. (Язык С). Дальше я не знаю...

Самое лучшее - писать код.
И читать чужой.

Если вы не знаете как сделать - поглядите, как это сделали другие. Если какой-нить выверт непонятен - посмотрите в книге. (не стоит забывать, что команда man куда как лучше бумажных книг - она актуальна)

Конечно, нет никакого смысла что-либо писать, если вы ещё не осилили связанный список, быструю сортировку и прочие базовые алгоритмы. Потому трёхтомник Кнута необходимо изучить (сейчас уже пятитомник).

Как-то так... А вообще, ЯП невозможно понять читая книги. Нужно писать код.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

42

drBatty пишет:

А вообще, ЯП невозможно понять читая книги. Нужно писать код.

+100500
Практика обязательна.

Чем отличается девушка-отличница и юноша-радиолюбитель, оба окончившие Радиофак? Кто из них ценится на рынке труда больше? Почему? -- Ответ один: практика!

Live Free or Die

43

zhevak пишет:
drBatty пишет:

А вообще, ЯП невозможно понять читая книги. Нужно писать код.

+100500
Практика обязательна.

Чем отличается девушка-отличница и юноша-радиолюбитель, оба окончившие Радиофак? Кто из них ценится на рынке труда больше? Почему? -- Ответ один: практика!

Практика без теории - это тупое повторение действий, как мартышка...

44 (06.01.2011 16:35:48 отредактировано RasenHerz)

От себя могу посоветовать начинающим свой путь в изучении С++ почитать следующие книги:

  • Виктор Штерн "Основы C++. Методы программной инженерии"

  • Скотт Мейерс "Эффективное использование C++"

  • Роберт Седжвик "Фундаментальные алгоритмы на C++" и/или (в зависимости от ваших потребностей и навыков) все тома Дональда Кнута

С работами Кнута рекомендую хотя бы ознакомиться(!).

отличная книга "Как программировать на С++"
ориджинал нейм "How to programming c++"
пишут Дейтелы, отец и сын.
много живого кода, автор прям разжовывает каждую сточку что и куда, зачем и почему именно так, и для чего все это.

//

46 (20.03.2011 00:58:02 отредактировано Cruiser78)

Кстати, если нужна книжка по С (чистому С, без плюсов) то я бы рекомендовал эту http://storage.library.opu.ua/online/books/c/index.htm. В свое время я её прочитал (в бумажном виде) за пару вечеров и мне её вполне хватило чтобы язык понять. А дальше - практика.

47

Я бы посоветовал изучать C++ по книге Джесса Либерти "Освой самостоятельно C++ за 21 день". Вот ссылка на библиотеку Google: http://books.google.com/books?id=42F8RH … mp;f=false. Сам изучаю по этой книге - очень хорошая! wink

48

Хочу высказаться по поводу не раз упоминавшихся Дейтелов. Сильной стороной является разбор именно принципов и философии С/С++, привязанность к IDE / ОС практически отсутствует. Т.е. идет разбор принципов и методов программирования на "голом" языке, Даются советы по переносимости (что для программирования под *nix - несомненный плюс) и задания для самоконтроля (ну, это - дело личное, для меня практика - способ приобретения знаний + уверенности в них). Так что по поводу данной книги - мои наилучшие рекомендации.

З.Ы.: все, конечно, ИМХО.

49

Я почти дочитал "K&R" и приступаю к "Объектно-ориентированное программирование в C++ - Р. Лафоре", т.к. по комментарием понял, что Страуструп сложнее в понимании.

50

Решил начать изучать данный язык, сразу возникли вопросы (т.к как я пока что нуб в этом деле) какое ПО и пакеты для этого нужны?
С чего лучше начать, какую литературу посоветуете? И совсем тупой вопрос в чем разница между C и C++, слышал что C больше подходит для Linux.
Ubuntu 11.10.

51

Linuxxxoid, тут поищи  wink

52 (24.02.2012 20:09:21 отредактировано CanSee)

C и С++ - это два разных языка программирования. C++ - это вовсе не расширение C, это совсем другой язык. На C он только похож.
Поэтому советовать надо в зависимости от выбора. А уж выбирать вам.
Каждый язык хорош для своих целей. Выбирать язык надо в зависимости от того, что вы на нём будете писать. Если какого-нибудь демона  (ну или, по аналогии с Windows, системную службу), или утилиту какую-нибудь консольную, без графического интерфейса - тогда, безусловно, C. Например, если веб-сервер новый собираетесь писать ab Если драйвер для устройства какого-то - тоже. Если ядро Linux изменять - тогда вообще без вариантов ab
А вот если что-то с графическим интерфейсом - тогда лучше C++. И лучше сразу предполагать применение какого-нибудь кроссплатформенного фреймворка. Например, Qt. И работу сильно облегчает, и на другие платформы можно быстро портировать.
Что почитать - тоже в зависимости от языка. Если C - тогда, конечно Кернигана и Ричи, "Язык C". Если C++ - то мне очень понравилась книга Дейтел и Дейтел, "Как программировать на с++".  По Qt - Макс Шлее "Qt 4.5 Профессиональное программирование" или Марк Саммерфилд и Жасмин Бланшет, "Программирование GUI на С++".
И самое главное - много-много практики ab

53

Я бы тоже хотел начать программирование, не знаю зачем, но что-то подсказывает, что пригодиться, я думаю надо начать с основ, но в школе (что странно) нам про Basic или Паскаль молчат.

54 (25.02.2012 00:56:01 отредактировано -=Serj=-)

Alecks-ei, давным-давно, учась в школе я самостоятельно изучал Паскаль - язык лёгкий и понятный, так как был создан для обучения программированию.
ИМХО сейчас, если его и изучать, то не стоит на нём задерживаться, после получения навыков переходить на что-то по-серьёзнее, иначе паскалевские привычки начнут вас тормозить.
А Бейсик лучше не трогать.
Вот такое дилетантское ИМХО. smile Если что, разрешаю меня пнуть. smile

Сам хочу изучить парочку, для меня основная проблема - отсутствие практики. Т. е. , получив определённые знания, не знаю куда их приложить, а без применения на практике они быстро улетучиваются. ac

Да, у меня Ubuntu.
Нет, не глючит.

55

Согласен с -=Serj=-.
Паскаль легок в изучении. Но если на нем задержаться, потом тяжело переходить на другие языки. Ибо синтаксис у него самобытный, второго такого не найдешь.
Главное при изучении языка - практика. Месяца 2 назад на работе написал программу на С++, по формированию этикеток со штрих кодом. Так сейчас если в исходники залезаю, уже сам не знаю, что где и как.

56

Michail_Ul пишет:

Паскаль легок в изучении.

не вижу разницы с С.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

57

drBatty пишет:

не вижу разницы с С.

не надо так много думать о памяти, где и какая она есть.

95% процентов проблем находятся между клавиатурой и стулом.

58 (28.02.2012 00:56:12 отредактировано drBatty)

Fat-Zer пишет:

не надо так много думать о памяти, где и какая она есть.

не надо первое время использовать static и alloc(). И всё будет просто.

ЗЫЖ а глобальные переменные вообще никогда не нужно использовать.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

59

Fat-Zer пишет:

не надо так много думать о памяти, где и какая она есть.

А мне кажется, что это минус для языка выбранного для начального изучения программирования. Шишки лучше сразу набить, зато потом и на том же паскале код красивее будет.

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

60

какая разница какой язык учить, главное как его использовать исходя из данной задачи, на любом языке можно практический решить все а хотевшие изучать язык будут его изучать а не спрашивать с чего начать.