C за C++ програмисти

Всичко за програмирането на игри - архитектура, графика, звук, изкуствен интелект, мрежи.

Потребителски аватар
themean
Power User
Power User
Мнения: 860
Регистриран: 02 дек 2010 22:51

Re: C за C++ програмисти

Мнение от themean » 29 ное 2011 16:43

Аз лично не виждам причина да предпочета C пред C++
Ако няко може да изреди такива моля нека го направи ще се радвам да науча нещо ново

gemicha
Site Admin
Site Admin
Мнения: 2930
Регистриран: 20 ное 2003 22:20
Местоположение: USA

Re: C за C++ програмисти

Мнение от gemicha » 30 ное 2011 08:49

Религиозни течения водени от фанатични опити да се промени нормалния ход на прогреса. Такива опити съм виждал поне два пъти. Последният път беше когато "гурутата" от онова време не признава нищо друго освен асемблер. Писането на нещо, което за присвояване използваше 3 инструкции вместо две се считаше за липса на участие в групата на "истинските програмисти"

Интересно как същите тези хора, които тогава не се съгласяваха да робуват на табута и използваха нормален език като C, същите тези сега правят опити налагат нови табута. Обикновенно излизайки с жалки примери на неуместо използване на C++. Това се поднася с голяма доза пренебрежение и некомптентност. Досега не съм видял в нито един от тези примери да се обяснят лошите последствiя от грешното използване на езика с просто липса на компетентност на програмистът или на този, които преставя примерът.

Зная от собствен опит, че е трудно е след 20 години в софтуерната индустрия да продължиш да учиш и да се развиваш. Трябва да си подложен на жестока конкуренция и наистина да харесваш това, което правиш за да можеш да открадваш време за четене, опити и развитие. Много по лесно е да намериш причината в езика за програмира, в платофрмата, в големината на екипа, във времето или нещо друго. Ако пък и си ограничен от страна на образование, т.е. попаднал случайно в игровата индустрия (50+% от програмистите, които аз съм вижда от индустрията) естествено е да откриеш в един момент, че просто не разбираш от C++ сорса защо това работи или как е направено нещо друго. И резлтатът е че почват да им се виждат странни или страшни определни конструкции от езика, забраняват да се ползват защото "платформата е нова", "реализацията не е добра", "трудно се чете" кода и т.н. Иначе умни хора тотално отричат резултатите от работата на екипи с много повече опит и умствен капацитет от вероятно цялата компания, в която работят. Чел съм невероятни изказвания за C++ и/или Design Patterns.

Казано по накратно, :) моето скромно мнение е, че пробелемите не са в езиците за програмиране а в хората, които не знаят как да ги ползват. C++ е чудесен език за високо квалифицирани софтуерни специалисти. Знания и квалификация се добиват с постоянно четене, учене и практика. Добре е да има и добри основи поставени в училище/университет с някакъв предмет, който формира абстрактно мислене, но всичко останало е работа, много работа! Така, че не се притесняай от писания на начинаещи програмисти, които смятат да се популяризират като повтарят "мантрите" на "гурутата"

Потребителски аватар
stoiko
Power User
Power User
Мнения: 617
Регистриран: 04 дек 2003 15:44
Контакти:

Re: C за C++ програмисти

Мнение от stoiko » 30 ное 2011 12:28

"There is an entire industry centred around preaching the use of OO patterns and the result is that people finish university thinking that Cats are Animals are Objects and they all need Update methods."
lol

сериозно, да отговоря на религиозния антирелигозен пост на гемича
човека не е съвсем newby както може да видим тук: http://www.mobygames.com/developer/shee ... Id,380164/
той смята C за език по-подходящ от C++ за Data oriented Design поради ограниченията които поставя и "по-описателната" си природа: това което виждаш като изходен код е максимално близо до това което ще произведе компилатора. ако данните ти са разпилени и се манипулират от 100 места това е явно още в изходния код, докато в C++ с неговите темплейти, неявни извиквания, виртуални методи, изключения, предефинирани оператори... не е съвсем така.
и на всичкото отгоре поста му е забавен и може да се посмееш тук там ако може да се отпуснеш и забравиш религиозните си убеждения

Потребителски аватар
Kerberos
Power User
Power User
Мнения: 234
Регистриран: 24 фев 2005 16:08
Местоположение: София
Контакти:

Re: C за C++ програмисти

Мнение от Kerberos » 30 ное 2011 13:37

Определено предпочитам и ползвам С, преди го отричах и смятах С++ за господ. С времето разбрах, че двата езика си имат своите силни и слаби страни. Примерно ако правиш GUI С++ е просто незаменим, но да манипулираш някакви прости байтови стрктури и да се оптиваш да изкормиш от тях измислени методи, private, public секции, members, темплетни ужасии и насилствено да ги онаследяваш щото трябва да си в крак с еволюцията е просто тъпо.

Потребителски аватар
stoiko
Power User
Power User
Мнения: 617
Регистриран: 04 дек 2003 15:44
Контакти:

Re: C за C++ програмисти

Мнение от stoiko » 30 ное 2011 14:16

C е малък => повече писане, по-спагетиран код, повече време в "тъкмене" на кода/данните така че да станат "по-стегнати" (bad) => по-малко генериран код/по-добре пакетирани данни (good ако сме "стегнати" достатъчно :))

C++ има от пиле мляко => повече писане в началото, теоретично по-малко писане после (теоретично good) => генерирания код варира теоретично от солиден и малък до огромен и окосмен в зависимост от кунгфуто на създателя и кунгфу-то на компилатора (теоретично bad)

C++ може да се осакати за да напомня C демек virtuals dont kill people, people do!

зависи кое е по-важно за задачата.

Потребителски аватар
themean
Power User
Power User
Мнения: 860
Регистриран: 02 дек 2010 22:51

Re: C за C++ програмисти

Мнение от themean » 30 ное 2011 16:21

Абе хора аз винаги съм си мислил че C++ подържа всичко, което подържа и C плюс някви бонуси,
които няма да изреждам
Единствената критика която можеби някой C фен може да има към C++ е че програмите с него са едвали не е по-бавни от тези на C
Това лично не съм го проверявал, но ако програмата е кратка има и логично обяснение
C++ е обектно ориентиран език и е предвиден за по-сложни неща ( полиморфизъм ) тоест стартиращият file (.exe или каквото там искате ) на програмата
трябва да извърши някакви допълнителни неща от сорта на това да създаде виртуална таблица и да я попълни и някакви други магарии, с които аз не съм
запознат , тези допълнителни "неща" би трябвало да отнемат константно време ( или слабо да зависи от размера на програмата ) ,
което няма да си проличава при програми с достатъчно голям размер.
Ако въпреки размера на програмта С вариантът е "по-бърз" това може да значи само, че компилаторът на C е с който е била компилирана програмта
е бил по-добър от съответния на С++
Но това е спорно, тъйкато компилаторите за C++ непрекъснато се развиват а този на C си е същия от сто години
И другия вече истински бонус на C e, че може библиотеки писани на него да се ползват в други процедурни езици както и в тяхни наследници ( тук не мога да дам друг пример освен C++ , но има )

@Kerberos
От доста скоро се занимавам с програмиране и в началото реших че трябва доста подробно да изуча както C така и C++ и си взех севъзможни книги
както за C така и за C++
Да ти кажа честно относно ниското ниво не видях никаква разлика в двата езика освен някои синтактични улеснения в полза на C++
Уверявам те в C++ може да правиш каквото си искаш с битовете и структурите така както го можеш в C

Ако има някакви възражения към казаното от мен или ако някъде греша моля нека бъда корегиран
Все пак от съвсем скоро се занимавам с програмиране и то любителски

pdimov
gosu
gosu
Мнения: 871
Регистриран: 02 дек 2003 01:04

Re: C за C++ програмисти

Мнение от pdimov » 01 дек 2011 02:51

Kerberos написа:С времето разбрах, че двата езика си имат своите силни и слаби страни.
Теоретично невъзможно е C++ като език да има слаби страни в сравнение със C, по простата причина, че всичкото C се съдържа и там. С други думи, някои части на C++ имат силни и слаби страни в сравнение с други части на C++. Е да, открихме Америка. Работа на програмиста е да знае кои части къде да ползва. Естествено, понякога на човек му е драго да забрани на някого да пише на C++, но никога не съм срещал смислена причина да забраня на себе си.

gemicha
Site Admin
Site Admin
Мнения: 2930
Регистриран: 20 ное 2003 22:20
Местоположение: USA

Re: C за C++ програмисти

Мнение от gemicha » 01 дек 2011 10:27

Софтуерната индустрия познава няколко сериозни и успешни опита за създаване на софтуерен дизайн, който намалява сложността на една система. Като успешни примери се дават фукционално ориентирен дизайн, структурно ориентиран дизай, обектно ориентиран дизайн. Целта на всички тях е да дадат препоръки как от едина голема и комплексна задача може да разделиш на по-малки по сложност задачи, които като решиш можеш да ги събереш и да получиш решение на голямата задача. Има работещи системи, които показват плюсовете и минусите на всеки от тези подходи.

Понятие като Data Oriented Design има толкова смисъл колкото и Algorithm Oriented Design. С две думи - няма смисъл! Така наречения Data Oriented Design не цели да намалява комплексността на зададена задача. Целта е съвсем друга и си има име в CS от много години. В реалността cache oblivious algorithms се използват от много, много години. Обхождане на паметта, в която е записана текстурата в Quake1 е един добър пример. Текстурирането в Doom1 е друг такъв пример. Може да се изброява назад във времето до лентите и барабаните. Винаги е имало значение какво пишеш и как го пишеш. Слагането на блестящи имена има други цели и обикновенно е свързано с липса на информираност или образование.

Много често C++ се представя като неразривно свързан с ООП. Основната част от езика наречена STL е много далеко от OOP. Можеш да пишеш на C++ по много и най-различни начини. Можеш да пишеш и като на C. Разликата, голямата разлика, е че може да пишеш и на C++, което обаче изисква усилия.

Потребителски аватар
stoiko
Power User
Power User
Мнения: 617
Регистриран: 04 дек 2003 15:44
Контакти:

Re: C за C++ програмисти

Мнение от stoiko » 01 дек 2011 10:59

pdimov написа:Естествено, понякога на човек му е драго да забрани на някого да пише на C++, но никога не съм срещал смислена причина да забраня на себе си.
Всички хора имат "уникална визия" за проблема и кода който го описва. Повечето хора са идиоти => Огромен език с много "възможности" (мотики за настъпване) е само предпоставка за бедствие.

Потребителски аватар
stoiko
Power User
Power User
Мнения: 617
Регистриран: 04 дек 2003 15:44
Контакти:

Re: C за C++ програмисти

Мнение от stoiko » 01 дек 2011 11:26

gemicha написа:Софтуерната индустрия познава няколко сериозни и успешни опита за създаване на софтуерен дизайн, който намалява сложността на една система. Като успешни примери се дават фукционално ориентирен дизайн, структурно ориентиран дизай, обектно ориентиран дизайн. Целта на всички тях е да дадат препоръки как от едина голема и комплексна задача може да разделиш на по-малки по сложност задачи, които като решиш можеш да ги събереш и да получиш решение на голямата задача. Има работещи системи, които показват плюсовете и минусите на всеки от тези подходи.

Понятие като Data Oriented Design има толкова смисъл колкото и Algorithm Oriented Design. С две думи - няма смисъл! Така наречения Data Oriented Design не цели да намалява комплексността на зададена задача. Целта е съвсем друга и си има име в CS от много години. В реалността cache oblivious algorithms се използват от много, много години. Обхождане на паметта, в която е записана текстурата в Quake1 е един добър пример. Текстурирането в Doom1 е друг такъв пример. Може да се изброява назад във времето до лентите и барабаните. Винаги е имало значение какво пишеш и как го пишеш. Слагането на блестящи имена има други цели и обикновенно е свързано с липса на информираност или образование.

Много често C++ се представя като неразривно свързан с ООП. Основната част от езика наречена STL е много далеко от OOP. Можеш да пишеш на C++ по много и най-различни начини. Можеш да пишеш и като на C. Разликата, голямата разлика, е че може да пишеш и на C++, което обаче изисква усилия.
алгоритми != парадигми => сравнението на cache oblivious algorithms с "data oriented design" няма смисъл.
"data oriented design" е подход при който фокуса е върху данните, тяхното разположение в паметта и достъпа до тях. трансформациите не се извършват върху отделни "обекти" (понятие лишено от смисъл според мен) а върху блокове данни (напр. множества от матрици, сфери, кутии...).
STL е несполучлив опит да се сложи изключително грозен общ интерфейс върху често ползвани алгоритми и структури от данни. Въпреки това още се срещат идиоти които пишат свои имплементации на въпросните структури/алгоритми създавайки цяла вселена от нови "мотики".

P.S. масовото навлизане на C++/OOP/STL в света на ембедед устройствата е престъпление срещу човечеството :)

pdimov
gosu
gosu
Мнения: 871
Регистриран: 02 дек 2003 01:04

Re: C за C++ програмисти

Мнение от pdimov » 01 дек 2011 17:59

stoiko написа:
pdimov написа:Естествено, понякога на човек му е драго да забрани на някого да пише на C++, но никога не съм срещал смислена причина да забраня на себе си.
Всички хора имат "уникална визия" за проблема и кода който го описва. Повечето хора са идиоти => Огромен език с много "възможности" (мотики за настъпване) е само предпоставка за бедствие.
То това е ясно, обаче аз първо не съм идиот, второ не съм длъжен да настъпвам мотиките. Така че пак сме в "другите трябва да пишат на C". Въпросът е защо човек би избрал за себе си да пише на C.

pdimov
gosu
gosu
Мнения: 871
Регистриран: 02 дек 2003 01:04

Re: C за C++ програмисти

Мнение от pdimov » 01 дек 2011 18:05

stoiko написа:STL е несполучлив опит да се сложи изключително грозен общ интерфейс върху често ползвани алгоритми и структури от данни.
STL е интерфейс от тип C. Няма други итератори в историята на вселената, които да имитират pointer аритметика вместо "ОО".
stoiko написа:P.S. масовото навлизане на C++/OOP/STL в света на ембедед устройствата е престъпление срещу човечеството :)
Навлизането точно в тази консервативна област не е случайно, въпреки че, разбираемо, отне много години.

Потребителски аватар
stoiko
Power User
Power User
Мнения: 617
Регистриран: 04 дек 2003 15:44
Контакти:

Re: C за C++ програмисти

Мнение от stoiko » 01 дек 2011 18:20

pdimov написа:То това е ясно, обаче аз първо не съм идиот, второ не съм длъжен да настъпвам мотиките. Така че пак сме в "другите трябва да пишат на C". Въпросът е защо човек би избрал за себе си да пише на C.
другите трябва да пишат на луа :). аз избирам C за себе си защото 1. нямам достатъчно нагънат мозък за да ползвам C++ както трябва и 2. искам максимален контрол върху това което изплюва компилатора.
pdimov написа:STL е интерфейс от тип C. Няма други итератори в историята на вселената, които да имитират pointer аритметика вместо "ОО".
да, това е много вярно и много трагично

pdimov
gosu
gosu
Мнения: 871
Регистриран: 02 дек 2003 01:04

Re: C за C++ програмисти

Мнение от pdimov » 02 дек 2011 03:46

stoiko написа:2. искам максимален контрол върху това което изплюва компилатора.
Дай пример, в който не ти е ясно какво изплюва C++ компилатора (който пример, естествено, да не важи за C).

pdimov
gosu
gosu
Мнения: 871
Регистриран: 02 дек 2003 01:04

Re: C за C++ програмисти

Мнение от pdimov » 02 дек 2011 06:23

Попаднах на това случайно и ми се видя подходящо за темата:

http://eli.thegreenplace.net/2011/11/30 ... scheme-vm/

Отговори